2014-09-22 11 views
5

Takılı kaldım java.net.SocketInputStream.socketRead0 (Native Method). Lütfen aşağıdaki gibi iş parçacığı dökümüne bakın, bu durumda 3 saattir.java.net.SocketInputStream.socketRead0'da (Yerel Yöntem)

Thread-0" prio=10 tid=0x00007facd02a5000 nid=0x309 runnable [0x00007facd4a43000] 
java.lang.Thread.State: RUNNABLE 
    at java.net.SocketInputStream.socketRead0(Native Method) 
    at java.net.SocketInputStream.read(SocketInputStream.java:150) 
    at java.net.SocketInputStream.read(SocketInputStream.java:121) 
    at sun.security.ssl.InputRecord.readFully(InputRecord.java:442) 
    at sun.security.ssl.InputRecord.read(InputRecord.java:480) 
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:927) 
    - locked <0x00000000e34a0428> (a java.lang.Object) 
    at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:884) 
    at sun.security.ssl.AppInputStream.read(AppInputStream.java:102) 
    - locked <0x00000000e34a0590> (a sun.security.ssl.AppInputStream) 
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:235) 
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:275) 
    at java.io.BufferedInputStream.read(BufferedInputStream.java:334) 
    - locked <0x00000000e30408b8> (a java.io.BufferedInputStream) 
    at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:633) 
    at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:579) 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1322) 
    - locked <0x00000000e3031d00> (a sun.net.www.protocol.https.DelegateHttpsURLConnection) 
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254) 
    - locked <0x00000000e3031c80> (a sun.net.www.protocol.https.HttpsURLConnectionImpl) 

Bağlantı zaman aşımını ayarlayıp URLConnection'a zaman aşımını okudum. Lütfen aşağıdaki kod snippet'ine bakın. Bu yüzden neden java.net.SocketInputStream.socketRead0'da takıldığını bilmiyorum. Bazen bu sorunu yaşıyorum. Herhangi bir öneri takdir edilir!

public String sendPost(String params) throws Throwable { 
PrintWriter out = null; 
String htmlContent = null; 
try 
{ 
    StringBuffer strBuffer = new StringBuffer(); 
    URL url = new URL(this.webUrl); 
    URLConnection urlConnection = url.openConnection(); 
    urlConnection.setConnectTimeout(3000); 
    urlConnection.setReadTimeout(3000); 

    urlConnection.setRequestProperty("accept", "*/*"); 
    urlConnection.setRequestProperty("connection", "Keep-Alive"); 
    urlConnection.setRequestProperty("user-agent", "***"); 

    urlConnection.setDoOutput(true); 
    urlConnection.setDoInput(true); 

    out = new PrintWriter(urlConnection.getOutputStream()); 
    out.print(params); 
    out.flush(); 

    BufferedReader bufferdReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), "utf-8")); 
    String readLine = null; 
     try { 
      while ((readLine = bufferdReader.readLine()) != null) { 
       strBuffer.append(readLine); 
      } 
     } catch (Throwable e) { 
      return htmlContent; 
     } 
     htmlContent = strBuffer.toString(); 
     bufferdReader.close(); 
+0

'Bağlantı: keep-' Sektör canlanacak' varsayılan değerdir. Herhangi bir POST parametresi yazmıyorsunuz: Bu kasıtlı mı? – EJP

+0

teşekkürler @EJP, Sadece kod teklifine daha fazla kod yapıştırıyorum, Bu bir operasyon işlemi. lütfen tekrar gözden geçirin .. – BurningDocker

+0

Bu konuda herhangi bir güncelleme var mı? – HamoriZ

cevap

0

Bu, URLConnection ile bir hata olduğunu düşünüyorum. Kontrol etmek için Yuvaları ve zaman aşımlarını kullanın.

İlgili konular