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' detail: org.kxml2.kdom.Node@44f1adb8 W/System.err(975): at 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): 在 org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:100) W/System.err(975): 在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(Native Method) W/System.err(975): at java.lang.reflect.Method.invoke(Method.java:521) W/System.err(975): at 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 收到的响应不是有效的 XML 肥皂响应。

您的网络服务似乎正在返回对象引用异常。您是否将正确的参数发送到您的网络服务?

request在对象中检查并更正它们。

于 2012-05-09T07:50:37.303 回答
0

我的 SOAP 调用如下,我认为您省略了名称空间。

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

此代码适用于尝试:) 在 url 中使用 10.0.2.2 而不是 10.0.2.1 因为模拟器正在使用此端口,并且在 request.addProperty 中,您必须指定您在 Web 服务中编写的方法名称,例如:我的方法正在取一个字符串 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 回答