sockets - Got stuck at java.net.SocketInputStream.socketRead0(Native Method) -
i got stuck @ java.net.socketinputstream.socketread0(native method). please see thread dump below, it's been in status 3 hours.
thread-0" prio=10 tid=0x00007facd02a5000 nid=0x309 runnable [0x00007facd4a43000] java.lang.thread.state: runnable @ java.net.socketinputstream.socketread0(native method) @ java.net.socketinputstream.read(socketinputstream.java:150) @ java.net.socketinputstream.read(socketinputstream.java:121) @ sun.security.ssl.inputrecord.readfully(inputrecord.java:442) @ sun.security.ssl.inputrecord.read(inputrecord.java:480) @ sun.security.ssl.sslsocketimpl.readrecord(sslsocketimpl.java:927) - locked <0x00000000e34a0428> (a java.lang.object) @ sun.security.ssl.sslsocketimpl.readdatarecord(sslsocketimpl.java:884) @ sun.security.ssl.appinputstream.read(appinputstream.java:102) - locked <0x00000000e34a0590> (a sun.security.ssl.appinputstream) @ java.io.bufferedinputstream.fill(bufferedinputstream.java:235) @ java.io.bufferedinputstream.read1(bufferedinputstream.java:275) @ java.io.bufferedinputstream.read(bufferedinputstream.java:334) - locked <0x00000000e30408b8> (a java.io.bufferedinputstream) @ sun.net.www.http.httpclient.parsehttpheader(httpclient.java:633) @ sun.net.www.http.httpclient.parsehttp(httpclient.java:579) @ sun.net.www.protocol.http.httpurlconnection.getinputstream(httpurlconnection.java:1322) - locked <0x00000000e3031d00> (a sun.net.www.protocol.https.delegatehttpsurlconnection) @ sun.net.www.protocol.https.httpsurlconnectionimpl.getinputstream(httpsurlconnectionimpl.java:254) - locked <0x00000000e3031c80> (a sun.net.www.protocol.https.httpsurlconnectionimpl)
and i've set connect timeout , read timeout urlconnection. please see code snippet below. don't know why it'd hang @ java.net.socketinputstream.socketread0. have problem occasionally. suggestion appreciated!
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();
i think bug urlconnection. use sockets , timeout on them check.
Comments
Post a Comment