您如何执行HTTP PUT?我正在使用的类似乎认为它正在执行PUT,但端点将其视为执行了GET。我做错什么了吗?

URL url = new URL("https://...");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("PUT");

OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream());

writer.write(xmlString);
writer.close();

System.out.println(conn.getRequestMethod());
String response = readInputStream(conn.getInputStream());
System.out.println(response);

正在打印:
PUT
<same content as doing a GET>

如果这个库可以工作,我宁愿不包括另一个库...

最佳答案

有一种简单的查找方法:运行Wireshark并查看网络上实际发生的情况。我发现这是诊断此类问题的最可靠方法-您的客户端可能有错误,库可能有错误,服务器可能有错误,但是Wireshark会向您展示实际情况。

编辑:好的,对于HTTPS来说有点棘手。如果您在运行Windows的代理服务器上可以使用Fiddler-如果可以说服客户端代码接受其证书,它可以应对HTTPS,但这更具侵入性...明确地设置了代理服务器更改流量的外观。

如果您可以改为通过HTTP与服务器的调试版本进行通讯,那将更好。在您的情况下可行吗,还是服务器完全在您的控制范围之外?

关于java - Java:带有HttpURLConnection的HTTP PUT,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2099576/

10-11 22:38
查看更多