2011-10-17 2 views
1

httpurlconnection (또는 httpsurlconnection)을 만드는 데 문제가 있습니다. 실제로 이것은 url.openconnection을 캐스팅 한 후 연결 헤더를 설정하는 것에 관한 것입니다. 실행중인 동일한 코드가 지금 실행되지 않기 전에. 나는 이해할 수 없었다. (예외 : 이미 연결되었거나 ... ..)android의 HttpURLConnections에 관한 질문입니다. (cast-URLConnection, url.openConnection, getOutPutStream() ..)

때까지 실행됩니다. httpConn.getOutPutStream(); 현재 "java.net.ProtocolException : 요청 헤더가 이미 전송되었으므로 OutputStream을 사용할 수 없습니다!"오류가 발생합니다.

내 잘못은 어디입니까 ??

나는 코드를 사용하기 전에 모든 코드 (나도 또 다른 질문에 대한 This Code가)

URL url = new URL(getUrl()); 
URLConnection conn = url.openConnection(); 
HttpURLConnection httpConn=(HttpURLConnection)conn; /*or HttpsURLConnection*/ 
httpConn.set... 
... 
httpConn.connect(); 
... 

내가 캐스팅 후 일부 설정을 설정하려고하지만 결과는 동일합니다 here이다.

 URL url = new URL(getUrl()); 
     conn = url.openConnection(); 
     conn.setAllowUserInteraction(false); 
     conn.setConnectTimeout(10000); 
     conn.setRequestProperty("Accept-Charset", "utf-8"); 
     conn.setRequestProperty("Content-Type", 
       "text/xml; charset=utf-8"); 
     conn.setRequestProperty("SOAPAction", 
       "http://tempuri.org/IAuthenticationServiceNew/Authenticate"); 
     conn.setRequestProperty("Software-Version", AppData.VERSION); 
     conn.setDoOutput(true); 
     httpConn = (HttpsURLConnection) conn; 
     httpConn.setChunkedStreamingMode(getParams().getBytes("UTF8").length); 
     httpConn.setInstanceFollowRedirects(true); 

     httpConn.connect(); 
     os = httpConn.getOutputStream(); 
     os.write(getParams().getBytes("UTF8")); 

답변

1

이 잘입니다 : conn.set .. '들 ... 난 아무것도 설정할 수 없습니다 캐스팅 후

변경된 코드를 작동되지만!
"httpConn.setInstanceFollowRedirects (true)"는 서버에 연결하여 헤더를 전송합니다. 나는이 코드를 닫는다.

 URL url = new URL(getUrl()); 
     httpConn = (HttpURLConnection) url.openConnection(); 
     httpConn.setDoInput(true); 
     httpConn.setDoOutput(true); 
     httpConn.setAllowUserInteraction(false); 
     httpConn.setUseCaches(false); 
     httpConn.setConnectTimeout(10000); 
     httpConn.setRequestProperty("Accept-Charset", "utf-8"); 
     httpConn.setRequestProperty("Content-Type", 
       "text/xml; charset=utf-8"); 
     httpConn.setRequestProperty("SOAPAction", 
       "http://tempuri.org/IAuthenticationServiceNew/" 
         + conTypeString); 
     httpConn.setRequestProperty("Software-Version", AppData.VERSION); 
     httpConn.setRequestMethod("POST"); 
     httpConn.setChunkedStreamingMode(0); 
     os = httpConn.getOutputStream(); 
     os.write(getParams().getBytes("UTF8"));