有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

c#将Java/Android连接到。网络服务

我刚刚建立了一个新的平台。net默认Web服务和HelloWorld方法

现在,我正在尝试连接一个Java/Android简单实现。net网络服务。我被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 安卓Http = new AndroidHttpTransport(URL);
     安卓Http.call(SOAP_ACTION, envelop);
  }
}

你知道为什么这样不行吗

问候


共 (2) 个答案

  1. # 1 楼答案

    在代码中输入以下行:

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

    编辑:

    1. dotNet标志必须为true才能生效。来自kSOAP2的NET web服务调用(当您使用.NET web服务时)。因此envelope.dotNet = true;

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

  2. # 2 楼答案

    如果您正在使用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 "";
    }