2011-09-20 4 views
0

Java에서 POST 요청을 보내려합니다. 순간, 나는 이런 식으로 작업을 수행합니다getInputStream()을 호출하지 않고 Java POST 요청 보내기

URL url = new URL("myurl"); 
URLConnection con = url.openConnection(); 
con.setDoOutput(true); 
PrintStream ps = new PrintStream(con.getOutputStream()); 
ps.println("key=" + URLEncoder.encode("value")); 
// we have to get the input stream in order to actually send the request 
con.getInputStream(); 
ps.close(); 

실제로 요청을 보내기 위해 con.getInputStream()를 호출해야 할 이유를 이해하지 않습니다. 전화하지 않으면 요청이 전송되지 않습니다.

PrintStream을 사용하는 데 문제가 있습니까? PrintStream, PrintWriter 또는 다른 것을 사용하는 것은 중요하지 않습니다.

+0

그 호출을'ps.flush()'로 바꾸어보십시오. –

+0

이미 시도했지만 도움이되지 않았습니다. ps.println()의 모든 호출은 이미 flush()를 호출합니다 ... – Simon

+1

죄송합니다. 지금 내 질문에 대한 답변을 찾았습니다. http://stackoverflow.com/questions/4844535/why-do-you-have-to- 4844926 # 4844926 – Simon

답변

0

다른 스레드의 게시물이 내 질문에 대답했다고 생각합니다. 미안하지만 너무 늦은 것 같아. 당신은 그것을 here 찾을 수 있습니다.

추신 : 내 답변이 너무 짧기 때문에 불행히도, Stackoverflow는 질문에 대한 나의 마지막 대답을 덧글으로 추가했습니다. 그리고 주석을 정답으로 표시 할 수는 없습니다 ...이 코드가 충분히 길기를 바랍니다 :-)

0

URL은 일부 출처를 나타냅니다.

URLConnection은 리소스에 대한 연결을 나타냅니다.

당신은 연결에게 출력에 기록하기 전에

con.setDoInput (false);
를 추가 할 수

+0

connect()가 필요할 때 자동으로 호출됩니다 ... – Simon

+0

예, openConnection은 잘못된 API 이름입니다. . – swanliu

0

시도를 연결하는 connection.connect()를 호출해야합니다.

추신 : 그리고 swanliu가 말한 것처럼 con.connect()를 호출해야합니다.

업데이트이 내가 TCP 연결이 설정되고 있음을

I Wireshark는 함께 확인

    private static final void sendPostRequest (final String urlAddress, String key, String value) throws Exception 
    { 
     URL url = new URL (urlAddress); 
     URLConnection con = url.openConnection(); 
     con.setDoOutput (true); 
     con.setDoInput (false); 
     PrintStream ps = new PrintStream (con.getOutputStream()); 
     ps.println (key + "=" + URLEncoder.encode (value, "UTF-8")); 
     ps.flush(); 
     con.connect(); 
     ps.close(); 
    } 

그 폐쇄 해낸 것입니다
. 그러나 서버가 요청을 수신했는지 확인하는 방법을 모릅니다. 빠른 방법으로 확인할 수 있으면 해당 코드를 사용해보십시오.

+0

불행히도, 이것은 아무런 효과가 없었습니다 ... – Simon