Java URL / HttpURLConnection как избежать InputStream при публикации? - PullRequest
2 голосов
/ 05 августа 2011

Можно ли сделать запрос метода POST к какому-либо URL и избежать чтения ответа?

Независимо от того, как сильно я стараюсь не читать ответ, кажется, что данные никогда не достигают сервера, если я не читаю ответ .. странно?

У меня действительно нет смысла читать какие-либо данные ответа, так как все, что я буду делать, это публиковать данные ... (ответ всегда будет пустым)

 URL postURL = new URL("http://www.example.com/test/");
 HttpURLConnection con = (HttpURLConnection) postURL.openConnection();
 con.setUseCaches(false);
 con.setDoOutput(true);
 con.setDoInput(false); //why even make this if it doesn't function?
 con.setRequestMethod("POST"); 

 //PrintWriter out = new PrintWriter(con.getOutputStream());
 OutputStream out = con.getOutputStream();
 byte[] /*String postStr*/ bPost = ("foo1="+URLEncoder.encode("bar1")+"&"+  
                       "foo2="+URLEncoder.encode("bar2")+"&"+   
                       "foo3="+URLEncoder.encode("bar3").getBytes();
 out.write(bPost);

 //out.println(postStr); // send to server
 out.flush();
 out.close();   // close outputstream
 //con.getInputStream().close(); //thought maybe this would help but no change.


 /*
 //If I uncomment this it will work.
 String inputLine="";   //Stores the line of text returned by the server
 String resultsPage=""; // Stores the complete HTML results page

 BufferedReader in = new BufferedReader(
             new InputStreamReader(con.getInputStream()));

 while ((inputLine = in.readLine()) != null)
       resultsPage+=inputLine;
 in.close();
 */

Ответы [ 2 ]

3 голосов
/ 05 августа 2011

Позвоните getResponseCode() после записи.

Это также даст вам 404 в качестве кода ответа, а не FileNotFoundException.

0 голосов
/ 05 августа 2011

Вы пытались вызвать con.connect()?

В противном случае он, вероятно, будет делать это "лениво", когда это абсолютно необходимо (заполнение буфера POST, начало чтения заголовков ответа и т. Д.).

...