0

だから私はksoapを使ってウェブサービスからいくつかのデータを収集しようとしています. 古い電話でも問題なく動作し、Wi-Fi 接続がある場合は新しい電話でも問題なく動作します。モバイルプロバイダーからブロードバンドに変更すると、エラーが返されます:

 java.net.SocketException: Socket is closed

なぜそれが起こるのか、誰にもアイデアがありますか?2 台の電話が同じ Web サービスに接続されており、どちらも同じアプリケーションを使用しており、古い電話は機能し、新しい電話は機能しないのは本当に奇妙です。

ところで私のコード:

String METHOD_NAME = "MPList";
String SOAP_ACTION = "https://server.location:443/MobileWS/#MPList";
String NAMESPACE = "https://server.location:443/MobileWS/";
String URL = "https://server.location:443/MobileWS/";

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("user", user);
request.addProperty("pass", pass);

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER12); 
List<HeaderProperty> headerList = new ArrayList<HeaderProperty>();

headerList.add(new HeaderProperty("Content-Type", "text/xml; charset=utf-8"));
headerList.add(new HeaderProperty("SoapAction", "https://server.location/#MPList"));
envelope.setOutputSoapObject(request);
HttpTransportSE httpTransport = new HttpTransportSE(URL);  
httpTransport.debug = true;
try{
    httpTransport.call(SOAP_ACTION, envelope, headerList);
    SoapObject response = (SoapObject)envelope.bodyIn;
    String a=httpTransport.responseDump;
} catch (IOException e2) {
    e2.printStackTrace();
} catch (XmlPullParserException e2) {
    e2.printStackTrace();
}
4

1 に答える 1

0

Android 4.0.3 と 4.0.4 に問題があるようで、https ではうまく動作しません。リンク: http://code.google.com/p/android/issues/detail?id=29509&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars

誰かが再びその問題に遭遇した場合、ここに解決策があります:

「keep-alive」値を持つ http「接続」プロパティを追加する必要があります。

 headerList.add(new HeaderProperty("Connection", "keep-alive"));

それは私の問題を解決しました!!!

于 2012-10-16T08:44:59.670 に答える