0

我刚刚使用 HelloWorld 方法构建了一个 .net 默认 Web 服务!

现在我正在尝试连接一个 Java/Android 简单实现来连接.net webservice。我被困在 HttpTransportSE 电话上。它不起作用,实际上它停在这里。与嗬没有错误。

这里的代码示例:

private class SoapAccessTask extends AsyncTask<String, Void, String> {

  protected String doInBackground(String... urls){
     final String METHOD_NAME = "HelloWorld";
     final String NAMESPACE = "http://tempuri.org";
     final String SOAP_ACTION = "http://tempuri.org/HelloWorld;
     final String URL = "http://localhost:2986/Service1.asmx;

     SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
     SoapSerializationEnvelop envelop = new SoapSerializationEnvelop(SoapEnvelop.VER11);
     AndroidHttpTransport androidHttp = new AndroidHttpTransport(URL);
     androidHttp.call(SOAP_ACTION, envelop);
  }
}

知道为什么这不起作用吗?

问候

4

2 回答 2

1

在您的代码中添加以下行:

envelope.dotNet = true;
envelope.setOutputSoapObject(request);

编辑:

  1. 对于来自 kSOAP2 的 .NET Web 服务调用,dotNet 标志必须为真(当您使用 .NET Web 服务时)。因此envelope.dotNet = true;

  2. 最后,SoapObject 实例“请求”被分配为信封的soap 调用的出站消息。因此envelope.setOutputSoapObject(request);

于 2013-08-17T18:48:53.483 回答
0

如果您使用 ksoap2 访问 asmx Web 方法,此代码可能会对您有所帮助

public class ServiceHandler {
    private static String SOAP_ACTION;    
    private static String OPERATION_NAME;    
    private static final String WSDL_TARGET_NAMESPACE = "http://xxx.example.com/";    
    private static final String SOAP_ADDRESS = "http://xxx.example.com/WebService.asmx";

    /**
     * call WebMethod
     * 
     * @param param1 
     * @param param2 
     * 
     * @return //sample code
     */
    public static String callWebMethod(String param1,String param2){

        OPERATION_NAME = "myFunc";
        SOAP_ACTION = "http://xxx.example.com/myFunc";

        SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE,OPERATION_NAME);

        request.addProperty("param1",param1);
        request.addProperty("param2",param2);

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

        envelope.setOutputSoapObject(request);

        HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS);

        try{                  
            httpTransport.call(SOAP_ACTION, envelope);      
            SoapObject object = (SoapObject) envelope.getResponse();
            //get object
        }catch(Exception exception){
            System.out.println(exception.toString());
            return "";          
        }
    }

    return "";
}
于 2013-08-17T18:44:12.710 回答