2016-11-09 6 views
-1

У меня есть url для вызова кода Я должен назвать его с помощью библиотеки Ksoap2 в коде.Как получить NAMESPACE, SOAP_ACTION, URL и METHOD_NAME, чтобы вызвать запрос SOAP в android

Мой код находится в ниже,

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,"[email protected]"); 
request.addProperty(HoldPayment.MerchantID,"e579752a-a591-11e6-9304-000c295eb8fc"); 
request.addProperty(HoldPayment.Mobile,"09"); 
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); 
} 

Мой URL является,

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

Я не знаю, что я должен установить для пространства имен, метод action_soap и URL в своем коде.

+0

Проверьте этот учебник http://www.compiletimeerror.com/2013/09/accessing-web-service-from-android.html#.WCLwUmr5jcs –

+0

обратитесь к http://stackoverflow.com/questions/297586/how- to-call-a-soap-web-service-on-android – sasikumar

ответ

2

Попробуйте это,

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,"[email protected]"); 
     request.addProperty(HoldPayment.MerchantID,"e579752a-a591-11e6-9304-000c295eb8fc"); 
     request.addProperty(HoldPayment.Mobile,"09"); 

     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; 
} 

Это, как я нашел NAMESPACE, WSDL, METHOD_NAME и SOAP_ACTION.

  1. NAMESPACE: Ищите «targetNamespace» в WSDL.
  2. WSDL/URL: Поиск «мыла: адрес» в WSDL. Значение в местоположении - это URL.
  3. METHOD_NAME: Я просматриваю аргументы, которые вы использовали для создания запроса. Он имел количество, CallbackURL, описание, электронную почту, MerchantID и мобильный (без дополнительных данных). Поэтому я решил, что вы пытаетесь вызвать метод PaymentRequest.
  4. SOAP_ACTION: найдите «soapAction» в WSDL. Среди матчей найдите тот, который связан с PaymentRequest. SOAP_ACTION обычно является URL + some_seperator + METHOD_NAME. Сепаратор в этом случае был #.

И поэтому я нашел все, что требовалось для запроса. Надеюсь, это тебе помогло. Удачи.

+0

@K Neeraj LaI можете ли вы рассказать мне, как вы получаете NAMESPACE, WSDL, METHOD_NAME и SOAP_ACTION? – zohreh

+0

@zohreh Проверьте изменения. Добавлено некоторое объяснение. –

+0

спасибо @K Neeraj LaI – zohreh