gpt4 book ai didi

java - 对 Bitbucket API 的 HTTP PUT 请求

转载 作者:可可西里 更新时间:2023-11-01 16:39:24 24 4
gpt4 key购买 nike

我想为 bitbucket 问题 API 访问开发一个 java 库。
我已经问过关于 the computation of the HTTP Content-Length header 的问题, 但这个问题专门针对 Bitbucket API以及更新问题的过程(因为所有其他请求都运行良好)。

以下代码不起作用,出现411 Length Required 错误。
但更令人困惑的是:在文档中,您被告知使用 PUT 请求方法。如果您“忘记”指定它,状态代码将更改为 200 OK,但问题保持不变。

public class PutTest {
public static void main(String[] args) throws Exception {
URL u = new URL("https://api.bitbucket.org/1.0/repositories/myname/myproject/issues/1/?title=hello+world");
HttpURLConnection c = (HttpURLConnection) u.openConnection();
c.addRequestProperty("Authorization", "Basic "+Base64.encodeToString("user:password".getBytes(), false));
c.addRequestProperty("Content-Length", String.valueOf(u.getQuery().getBytes("UTF-8").length));
c.setRequestMethod("PUT");
c.connect();
System.out.println(c.getResponseCode()+" "+c.getResponseMessage());
}
}

最佳答案

在 stackoverflow 上的另一个问题的帮助下,我更新的代码示例有效:How to send PUT, DELETE HTTP request in HttpURLConnection? Looks like not working .

利用连接的 OutputStream 有效。

public class PutTest {

public static void main(String[] args) throws Exception {
URL u = new URL("https://api.bitbucket.org/1.0/repositories/myname/myproject/issues/1/");
HttpURLConnection c = (HttpURLConnection) u.openConnection();
c.addRequestProperty("Authorization", "Basic "+Base64.encodeToString(("user:password").getBytes(), false));
c.setRequestMethod("PUT");
c.setDoOutput(true);
OutputStreamWriter out = new OutputStreamWriter(c.getOutputStream());
out.write("title=hello+world");
out.close();
c.connect();
System.out.println(c.getResponseCode()+" "+c.getResponseMessage());
}
}

关于java - 对 Bitbucket API 的 HTTP PUT 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6457354/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com