0
我能夠成功地從我的android應用程序調用.net web服務。用模擬器(2.2版apilevel 8到4.0.3 api level 15)進行測試,效果很好。從Android設備連接到Web服務時發生SocketTimeout異常(僅限設備不在仿真器)
我現在試圖用摩托羅拉razr MAZZ設備測試相同的代碼。它是連接的,能夠達到斷點並能夠完成所有功能,除了打電話給web服務。我得到「java.net.SocketTimeoutException:連接超時」。 我的代碼寫在下面。它適用於仿真器,但不適用於設備。
URL = UtilsAct.Instance().GetSettingString(ctx, "sett_url");
String str="";
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("IsEncrypted",false);
request.addProperty("routes", "EAST");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL,60000);
try
{
androidHttpTransport.call(SOAP_ACTION, envelope); // java.net.SocketTimeoutException: Connection timed out
Object receivedObj = envelope.getResponse();
str = receivedObj.toString();
}
catch(Exception e)
{
//e.printStackTrace();
String errmsg = "Exception:";
if(e.getMessage() != null)
errmsg = errmsg + e.getMessage();
}
我試着在各種文章中給出的所有技巧,包括
HttpConnectionParams.setConnectionTimeout(params, timeout);
HttpConnectionParams.setSoTimeout(params, timeout);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setConnectTimeout(timeout);
urlConnection.setReadTimeout(timeout);
欣賞的幫助。 謝謝!
「java.net.SocketTimeoutException:連接超時」表示服務器沒有響應,或者沒有及時響應。但很難說如果你不提供堆棧跟蹤。 – Christine
謝謝克莉絲汀。正如我寫的,它使用模擬器很好,所以服務器和代碼以及服務器權限都可以。 – abhinaw
正如我所說,如果您不發佈堆棧跟蹤,該如何提供幫助? – Christine