我想通过HTTP PUT向服务器发送一些数据(调用REST Web服务)。以下是代码..
URL urlObj = new URL("http://99.66.66.238:8443/media/service");
HttpURLConnection conn = (HttpURLConnection) urlObj
.openConnection();
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setRequestMethod("PUT");
conn.setRequestProperty("accept-charset", "UTF-8");
conn.setRequestProperty("content-type",
"application/x-www-form-urlencoded");
String userPassword = username + ":" + password;
byte[] authEncBytes = Base64.encodeBase64(userPassword.getBytes());
String authStringEnc = new String(authEncBytes);
conn.setRequestProperty("Authorization", "Basic " + authStringEnc);
OutputStreamWriter writer = new OutputStreamWriter(
conn.getOutputStream(), "UTF-8");
writer.write(requestXML);
conn.getOutputStream().flush();
但另一方面,他们没有得到数据。他们只看到..
PUT /media/service HTTP/1.1
accept-charset: UTF-8
content-type: application/x-www-form-urlencoded
Authorization: Basic cm10dGVzdDpwYXNzd29yZA=3D=3D
Cache-Control: no-cache
Pragma: no-cache
User-Agent: Java/1.6.0_13
Accept: text/html, image/gif, image/jpeg, *; q=3D.2, */*; q=3D.2
Connection: keep-alive
Content-Length: 0
注意Content-Length是如何为0.你能否告诉我为什么数据没有通过?无论如何我能看到我发送的确切内容吗?
感谢。
答案 0 :(得分:1)
您还需要刷新输出所有缓冲输出。也许你只想使用:
conn.getOutputStream().write(requestXML.getBytes("UTF-8"));
这会自动刷新输出。
答案 1 :(得分:0)
你不应该在编写器上调用flush()而不是连接的输出流吗?在我刷新连接的输出流时,数据可能仍然在编写器的缓冲区中,这可以解释发送的0字节。