如何通过Android发送soap请求?

发布于 2024-11-30 12:55:13 字数 2002 浏览 0 评论 0原文

我如何向此服务发送请求?

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <total xmlns="http://tempuri.org/">
      <validationRequest>
        <Name>string</Name>
        <num1>int</num1>
        <num2>int</num2>
      </validationRequest>
    </total>
  </soap:Body>
</soap:Envelope>

安卓代码:

private static final String NAMESPACE ="http://tempuri.org/";
private static final String SOAP_ACTION ="http://tempuri.org/total";
private static final String URL ="http://10.0.2.2:1743/Service1.asmx";
private TextView tv;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    tv = (TextView) findViewById(R.id.tv);
    tv.setText(ws());
}

private String ws() {
    String result = "";
    try {
        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);    
        System.out.println("ohaissxh");
        PropertyInfo quotesProperty = new PropertyInfo();

        request.addProperty("Name","Nas");
        request.addProperty("num1",6);
        request.addProperty("num2",5);
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.dotNet = true;
        envelope.setOutputSoapObject(request);
        HttpTransportSE ht = new HttpTransportSE(URL);
        ht.call(SOAP_ACTION, envelope);
        System.out.println("dfdjsssf");

        if(envelope.getResponse()!=null){
            //SoapObject response = (SoapObject)envelope.bodyIn;
            Object response = envelope.getResponse();
            result = response.toString();
        }
    } catch (Exception e) {
        result = e.getMessage();
    }
    return result;
}

How can I send a request to this service?

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <total xmlns="http://tempuri.org/">
      <validationRequest>
        <Name>string</Name>
        <num1>int</num1>
        <num2>int</num2>
      </validationRequest>
    </total>
  </soap:Body>
</soap:Envelope>

Android code:

private static final String NAMESPACE ="http://tempuri.org/";
private static final String SOAP_ACTION ="http://tempuri.org/total";
private static final String URL ="http://10.0.2.2:1743/Service1.asmx";
private TextView tv;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    tv = (TextView) findViewById(R.id.tv);
    tv.setText(ws());
}

private String ws() {
    String result = "";
    try {
        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);    
        System.out.println("ohaissxh");
        PropertyInfo quotesProperty = new PropertyInfo();

        request.addProperty("Name","Nas");
        request.addProperty("num1",6);
        request.addProperty("num2",5);
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.dotNet = true;
        envelope.setOutputSoapObject(request);
        HttpTransportSE ht = new HttpTransportSE(URL);
        ht.call(SOAP_ACTION, envelope);
        System.out.println("dfdjsssf");

        if(envelope.getResponse()!=null){
            //SoapObject response = (SoapObject)envelope.bodyIn;
            Object response = envelope.getResponse();
            result = response.toString();
        }
    } catch (Exception e) {
        result = e.getMessage();
    }
    return result;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

何止钟意 2024-12-07 12:55:13

在您的 SOAP 请求中,
是一种复杂的请求类型,您根本无法像通常对原始类型那样在 request 中添加属性。

您需要创建一个类,它扩展 Vector实现 KVMSerialized

public class ValidationReq extends Vector<String> implements KvmSerializable {


        @Override
        public Object getProperty(int arg0) {
                return this.get(arg0);
        }

        @Override
        public int getPropertyCount() {
                return this.size();
        }

        @Override
        public void getPropertyInfo(int arg0, Hashtable arg1, PropertyInfo arg2) {
                arg2.name = "string";
                arg2.type = PropertyInfo.STRING_CLASS;
        }

        @Override
        public void setProperty(int arg0, Object arg1) {
                this.add(arg1.toString());
        }

}

您的类将包含您要发送的参数,并且您需要将类的对象添加到请求中。

示例代码段可以在官方 KSOAP 文档< /strong>

In your SOAP request,
<validationRequest> is a complex request type and you simply cannot add the property in the request, as usually done for primitive types.

You need to create a class which extends Vector and implements KVMSerializable.

public class ValidationReq extends Vector<String> implements KvmSerializable {


        @Override
        public Object getProperty(int arg0) {
                return this.get(arg0);
        }

        @Override
        public int getPropertyCount() {
                return this.size();
        }

        @Override
        public void getPropertyInfo(int arg0, Hashtable arg1, PropertyInfo arg2) {
                arg2.name = "string";
                arg2.type = PropertyInfo.STRING_CLASS;
        }

        @Override
        public void setProperty(int arg0, Object arg1) {
                this.add(arg1.toString());
        }

}

Your class would contain the parameters that you want to send and you need to add the object of the class to the request.

Sample code snippet can be found in the official KSOAP documentation.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文