如何使用HttpURLConnection在Java中等待Expect 100-continue响应

被困在使用HttpURLConnection向Web服务器发出PUT http请求。 我有一些代码可以使PUT请求很好,我可以在标题中包含’期望100-继续请求属性’然后尝试我可能似乎无法让函数等待’100继续’在发送实际的http有效负载之前从服务器响应。

我得到以下(来自Wireshark)

PUT /post/ HTTP/1.1 User-Agent: curl/7.35.0 Accept: */* Content-Type: application/x-www-form-urlencoded Expect: 100-continue Host: somerandomdomain.info Connection: keep-alive Content-Length: 17 Some data for you HTTP/1.1 100 Continue ...rest of web-server response... 

我确定我错过了一些明显的东西然而在谷歌搜索后我画了一个空白 – 有人可以帮忙吗?

非常感谢如果:)

下面的Http PUT代码片段:

 String url = "http://somerandomdomain.info"; String postJsonData = "Some data for you\n"; URL obj = new URL(url); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); // Setting basic post request con.setRequestMethod("PUT"); con.setRequestProperty("User-Agent", "jcurl/7.35.0"); con.setRequestProperty("Accept", "*/*"); con.setRequestProperty("Content-Length", postData.length() + ""); con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); con.setRequestProperty("Expect", "100-continue"); // Send post request con.setDoOutput(true); DataOutputStream wr = new DataOutputStream(con.getOutputStream()); wr.writeBytes(postData); wr.flush(); wr.close(); int responseCode = con.getResponseCode(); System.out.println("\nSending 'POST' request to URL : " + url); System.out.println("Post Data : " + postData); System.out.println("Response Code : " + responseCode); BufferedReader in = new BufferedReader( new InputStreamReader(con.getInputStream())); String output; StringBuffer response = new StringBuffer(); while ((output = in.readLine()) != null) { response.append(output); } in.close(); //printing result from response System.out.println(response.toString()); 

对我来说,为什么他们这样设计它并不明显,但实现Expect:100逻辑的代码只有在执行getOutputStream之前调用了setFixedLengthStreamingMode(int contentlen)long的重载或setChunkedStreamingMode(int chunklen)时才使用。 。 在这种情况下,我建议第一个最简单。