如何在android中获取NAMESPACE、SOAP_ACTION、URL 和 METHOD_NAME 来调用 SOAP 请求 [英] How to get NAMESPACE, SOAP_ACTION, URL and METHOD_NAME to call SOAP request in android

查看:31
本文介绍了如何在android中获取NAMESPACE、SOAP_ACTION、URL 和 METHOD_NAME 来调用 SOAP 请求的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个用于调用代码的网址,我应该在代码中使用 Ksoap2 库调用它.

I have a url for calling in code I should call it with Ksoap2 library in code.

我的代码在下面,

final String NAMESPACE ="";
final String URL ="";
final String METHOD_NAME = "";
final String SOAP_ACTION = "";
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 
request.addProperty(HoldPayment.Amount, "1000");
request.addProperty(HoldPayment.CallbackURL,"http://www.yoursoteaddress.ir/verify.php");
request.addProperty(HoldPayment.Description,"pule kharide tala");
request.addProperty(HoldPayment.Email,"za@gmail.com");
request.addProperty(HoldPayment.MerchantID,"e579752a-a591-11e6-9304-000c295eb8fc");
request.addProperty(HoldPayment.Mobile,"09012345678");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
try {
    androidHttpTransport.call(SOAP_ACTION,envelope);
    Object resultsRequestSOAP = envelope.bodyIn;
    Log.e("","Response::"+resultsRequestSOAP.toString());
} catch (Exception e) {
    e.printStackTrace();
    System.out.println("Error"+e);
}

我的网址是,

https://www.zarinpal.com/pg/services/WebGate/wsdl

我不知道应该在代码中为命名空间、方法、action_soap 和 url 设置什么.

I don't know what I should set to namespace, method, action_soap and url in my code.

推荐答案

试试这个,

private static final String NAMESPACE ="http://zarinpal.com/";
private static final String WSDL ="https://www.zarinpal.com/pg/services/WebGate/service";
private static final String METHOD_NAME = "PaymentRequest";
private static final String SOAP_ACTION = WSDL + "#" + METHOD_NAME;

private static String TAG = "soap";

public static String callWebservice() {
    String responseDump = "";
    try {
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
        request.addProperty(HoldPayment.Amount, "1000");
        request.addProperty(HoldPayment.CallbackURL,"http://www.yoursoteaddress.ir/verify.php");
        request.addProperty(HoldPayment.Description,"pule kharide tala");
        request.addProperty(HoldPayment.Email,"za@gmail.com");
        request.addProperty(HoldPayment.MerchantID,"e579752a-a591-11e6-9304-000c295eb8fc");
        request.addProperty(HoldPayment.Mobile,"090123456789");

        envelope.bodyOut = request;
        HttpTransportSE transport = new HttpTransportSE(WSDL);

        transport.debug = true;
        try {
            transport.call(SOAP_ACTION, envelope);
            String requestDump = transport.requestDump;
            responseDump = transport.responseDump;
            Log.e(TAG, requestDump);
            Log.e(TAG, responseDump);
        } catch (IOException e) {
            e.printStackTrace();
        }

    } catch (Exception e) {
        e.printStackTrace();
    }
    return responseDump;
}

这就是我找到 NAMESPACEWSDLMETHOD_NAMESOAP_ACTION 的方式.

This is how I found NAMESPACE, WSDL, METHOD_NAME and SOAP_ACTION.

  1. NAMESPACE:在 WSDL 中搜索targetNamespace".
  2. WSDL/URL :在 WSDL 中搜索soap:address".location 中的值是 URL.
  3. METHOD_NAME :我查看了您用于创建请求的参数.它有 Amount、CallbackURL、Description、Email、MerchantID 和 Mobile(没有 AdditionalData).所以我认为您正在尝试调用 PaymentRequest 方法.
  4. SOAP_ACTION :在 WSDL 中搜索soapAction".在匹配项中,查找与 PaymentRequest 相关的匹配项.SOAP_ACTION 通常是 URL + some_seperator + METHOD_NAME.本例中的分隔符是 #.
  1. NAMESPACE : Search for "targetNamespace" in the WSDL.
  2. WSDL/URL : Search for "soap:address" in the WSDL. The value in location is the URL.
  3. METHOD_NAME : I look at the arguments you were using to create the request. It had Amount, CallbackURL, Description, Email, MerchantID and Mobile (no AdditionalData). So I figured you are trying to call PaymentRequest method.
  4. SOAP_ACTION : Search for "soapAction" in the WSDL. Among the matches, look for the one related to PaymentRequest. The SOAP_ACTION is usually the URL + some_seperator + METHOD_NAME. The separator in this case was #.

所以我找到了提出请求所需的一切.希望对你有帮助.祝你好运.

And so I found everything that was required to make the request. Hope it helped you. Good luck.

这篇关于如何在android中获取NAMESPACE、SOAP_ACTION、URL 和 METHOD_NAME 来调用 SOAP 请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆