0

Androidアプリから.netWebサービスを正常に呼び出すことができます。エミュレーター(2.2apilevel8から4.0.3apilevel 15)でテストしたところ、うまく機能しました。

私は今、MotorolarazrMAZZデバイスで同じコードをテストしようとしています。接続されており、ブレークポイントに到達でき、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);

ヘルプに感謝します。ありがとう!

4

1 に答える 1

0

私はそれを本当に遅く更新しています。Web サービスをホストしているサーバーがセキュリティ ポリシーを使用しており、wifi を使用するデバイスからの呼び出しを許可していないことがわかりました。エミュレーターはネットワーク内で機能したため機能したため、セキュリティに干渉しません。サーバーのセキュリティを変更して、wifi を使用するデバイスからの呼び出しを許可した後、上記のコードが機能するようになりました。

于 2012-08-30T13:50:11.883 に答える