2

次のコードを使用しています。

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            envelope.setOutputSoapObject(request);
            envelope.dotNet=true;           
            HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);  
            try
            {
                androidHttpTransport.call(SOAP_ACTION, envelope);              
                SoapPrimitive response = (SoapPrimitive)envelope.getResponse();
                Log.i("myApp", response.toString());  
                TextView tv = new TextView(this);
                tv.setText("message="+response.toString());
                setContentView(tv);                              
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }

Web サービスは正常に動作していますが、次のエラーが表示されます。

W/System.err(975): --- 内部例外スタック トレースの終わり ---' faultactor: 'null' 詳細: org.kxml2.kdom.Node@44f1adb8 W/System.err(975): org. ksoap2.serialization.SoapSerializationEnvelope.parseBody(SoapSerializationEnvelope.java:116) W/System.err(975): org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:137) で W/System.err(975): org. ksoap2.transport.Transport.parseResponse(Transport.java:63) W/System.err(975): at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:100) W/System.err(975): at com.redbus.SearchRoute.onCreate(SearchRoute.java:90) W/System.err(975): android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) で W/System.err(975): Android で。 app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) W/System.err(975): android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) W/System.err(975): android.app.ActivityThread.access$2300(ActivityThread.java:125) で W/System.err(975): android.app.ActivityThread で$H.handleMessage(ActivityThread.java:2033) W/System.err(975): android.os.Handler.dispatchMessage(Handler.java:99) で W/System.err(975): android.os.Looper で.loop(Looper.java:123) W/System.err(975): android.app.ActivityThread.main(ActivityThread.java:4627) で W/System.err(975): java.lang.reflect.Method で.invokeNative(ネイティブ メソッド) W/System.err(975): java.lang.reflect.Method.invoke(Method.java:521) で W/System.err(975): com.android.internal.os で。 ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) W/System.err(975): com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) W/System.err(975):dalvik.system.NativeStart.main (ネイティブ メソッド) で

4

3 に答える 3

0

によるfaultstring: 'System.Web.Services.Protocols.SoapException: Server was unable to process request.と、ksoapは有効なXMLsoap応答ではない応答を受信して​​いると思います。

Webサービスがオブジェクト参照例外を返しているようです。Webサービスに正しいパラメータを送信していますか?

オブジェクトでそれらを確認して修正しrequestます。

于 2012-05-09T07:50:37.303 に答える
0

このコードは試してみてください:)URLでは10.0.2.1ではなく10.0.2.2を使用します。これは、エミュレータがこのポートを使用しているためです.request.addPropertyでは、Webサービスexで記述したメソッド名を指定する必要があります.文字列 m を取っていたので、 addProperty("m","//here the object you want to send") に書きました

SoapObject request = new SoapObject("http://tempuri.org/", "GetCoursesInfos");
    request.addProperty("m","courses");

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.dotNet=true;
    envelope.setOutputSoapObject(request);


    HttpTransportSE http = new HttpTransportSE("http://10.0.2.2:2612/Service1.svc");//hint you

        http.call("http://tempuri.org/IService1/GetCoursesInfos", envelope);

        Object result= (Object)envelope.getResponse();
        message=result.toString();



    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        Log.d("1", "first exe");
        txt.setText(e.getMessage());

    }
于 2012-05-09T08:07:23.217 に答える
0

私の SOAP 呼び出しは次のようになります。名前空間を省略していると思います。

List respHeaders = httpTransport.call(NAMESPACE+"/"+methodName, envelope, headerPropertyList);
于 2012-05-09T08:02:15.317 に答える