2016-12-01 11 views
0

私は、サーバーからの応答では興味がない場合は、私は次のコードを削除することができ、次のコードサーバーから応答コードを取得する必要がありますか?

URL url = new URL(pushURL); 
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
conn.setDoOutput(true); 
conn.setRequestMethod("POST"); 
conn.setRequestProperty("Content-Type", "application/restService"); 
conn.setConnectTimeout(30000); 
conn.setReadTimeout(30000); 
if(conn.getResponseCode() == 200){ 
    logger.debug("Success"); 
} else {     
    logger.debug("Time out set for 30 seconds"); 
} 
String input = writer.getBuffer().toString(); 
OutputStream os = conn.getOutputStream(); 

がありますか?

if(conn.getResponseCode() == 200){ 
    logger.debug("Success"); 
} else {     
    logger.debug("Time out set for 30 seconds"); 
} 

はコードは、それがそのまま全体だ中で、まだサーバーの応答を取得し、 conn.getOutputStream();を実行する方法があり、 java.net.ProtocolExceptionを引き起こすことを考えると?どのような順序で?明らかな報告上の懸念を除いて、回答を得られなかった場合の結果は何ですか?

答えて

2

問題は、レスポンスコードを取得すると、あなたの投稿を送信したことです。あなたのコードでは、応答を得る前に出力ストリームに何も書き込まない。だから、あなたは本質的に何もポスト(ヘッダー情報だけ)を送信し、レスポンスコードを取得してから、再度書き込もうとしていますが、これは許可されません。何をする必要が最初に出力ストリームに書き込み、その後、そのように応答コードを取得することです:

public static void main(String[] args) throws IOException { 
    URL url = new URL(pushURL); 
    HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
    conn.setDoOutput(true); 
    conn.setRequestMethod("POST"); 
    conn.setRequestProperty("Content-Type", "application/restService"); 
    conn.setConnectTimeout(30000); 
    conn.setReadTimeout(30000); 
    String input = writer.getBuffer().toString(); 
    OutputStream os = conn.getOutputStream(); 
    for (char c : input.toCharArray()) { 
     os.write(c); 
    } 
    os.close(); 

    if(conn.getResponseCode() == 200){ 
     System.out.println("Success"); 
    } else {     
     System.out.println("Time out set for 30 seconds"); 
    } 
} 

はここで少しチュートリアルです:

Reading and Writing Tutorial

+0

は答えとチュートリアルをありがとう – Mushy

関連する問題