我想发送一个包含JSON-Body的Http-PUT-Request,但我不知道如何定义该主体。我已经尝试了很多,但总是遇到同样的问题。顺便说一下,我已经在邮递员中测试了put-request,它应该可以正常工作,但我无法用Java实现这个请求。
我的最新尝试看起来像这样:
String sURL = "http://localhost/Thingworx/Things/testAC/Properties/*";
HttpURLConnection urlConn;
URL mUrl = new URL(sURL);
urlConn = (HttpURLConnection) mUrl.openConnection();
//query should be the body
String query = String.format("{\"datDate\":%s,\"txtFrom\": %s,\"txtTo\": %s,\"numFlightTimeDecimal\":%f,\"numSeatCapacity\":%d,\"numLoad\":%d,\"numDirt\":%f,\"numTotalFlightTime\":%f,\"numCummulatedDirt\":%f}", javaDate.toString(), txtFrom, txtTo, numFlightTimeDecimal, numSeatCapacity, numLoad, numDirt, numTotalFlightTime, numCumDirt);
urlConn.setRequestMethod("PUT");
urlConn.setRequestProperty("appKey", "1042fdd2-8e85-4de1-9c92-d79ac24c1ffc");
urlConn.addRequestProperty("Content-Type", "application/json");
urlConn.setDoOutput(true);
if (query != null) {
urlConn.setRequestProperty("Content-Length", Integer.toString(query.length()));
urlConn.getOutputStream().write(query.getBytes("UTF8"));
}
System.err.println(urlConn.getResponseCode());
响应代码说200,那应该没问题。但PUT-Request不会更改服务器上的任何值。请求没有显示任何效果。
提前感谢您提供任何帮助或建议! 颖
答案 0 :(得分:0)
urlConn.setRequestMethod("PUT");
将请求方法设置为PUT。
urlConn.setDoOutput(true);
启用输出并将请求方法设置为POST。见Javadoc。你需要先做,而不是持续。
注意不要设置内容长度。 Java会为你做到这一点。