Как вызвать SOAP веб-службы на Android

голоса
507

Я имею много проблем найти хорошую информацию о том , как вызвать стандартный SOAP / WSDL веб - службы с Android. Все , что я смог найти, либо очень запутанные документы и ссылки на «kSoap2» , а затем некоторые битовый разбор все это вручную с помощью SAX . Хорошо, это хорошо, но это 2008, так что я полагал , что должен быть какой - то хорошая библиотека для вызова стандартных веб - сервисов.

Веб - сервис только в основном один созданный в среде NetBeans . Я хотел бы иметь поддержку IDE для создания классов сантехники. Я просто нужен простой / наиболее элегантный способ связаться с WSDL на основе веб - службы из Android на основе телефона.

Задан 18/11/2008 в 02:32
источник пользователем
На других языках...                            


26 ответов

голоса
232

Android не дает какой - либо библиотеки SOAP. Вы можете написать свой собственный, или использовать что - то вроде kSOAP 2 . Как вы заметили, другие были в состоянии собрать и использовать kSOAP2 в своих собственных проектах, но я не должен был.

Google показал, на сегодняшний день, мало интереса в добавлении библиотеки SOAP для Android. Мои подозрения в том, что они скорее поддерживают текущие тенденции в веб-сервисов в направлении REST-сервисов, а также с использованием JSON в качестве формата инкапсуляции данных. Или, используя XMPP для обмена сообщениями. Но это только гипотеза.

XML на основе веб-сервисов являются немного нетривиальной задачей на Android в настоящее время. Не зная NetBeans, я не могу говорить с инструментами, доступными там, но я согласен, что лучше библиотека должна быть доступна. Вполне возможно, что XmlPullParser избавит вас от использования SAX, но я много об этом не знаю.

Ответил 19/11/2008 в 22:50
источник пользователем

голоса
94

org.apache.http.impl.client.DefaultHttpClientприходит в Android SDK по умолчанию. Это будет подключить Вас к WSDL.

HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpGet httpGet = new HttpGet("http://www.example.com/" + URL);
HttpResponse response = httpClient.execute(httpGet, localContext);
Ответил 08/01/2009 в 23:17
источник пользователем

голоса
56

Это правда, что из-за его накладные расходы SOAP не является лучшим выбором для обмена данными с мобильными устройствами. Тем не менее, вы могли бы найти себя в ситуации, в которой вы не контролируете формат вывода сервера.

Итак, если вы должны придерживаться SOAP, есть библиотека kSOAP2 заплата для Android здесь:
http://code.google.com/p/ksoap2-android/

Ответил 10/10/2009 в 11:57
источник пользователем

голоса
30

Для вызова веб-службы с мобильного устройства (особенно на Android телефон), я использовал очень простой способ сделать это. Я не использовал любой клиент API веб-службы в попытке вызова веб-службы. Мой подход заключается в следующем, чтобы сделать звонок.

  1. Создать простое соединение HTTP, используя стандартный API Java HttpURLConnection.
  2. Форма запроса SOAP. (Вы можете сделать помощь SoapUI сделать запрос SOAP.)
  3. Установите doOutPut флаг как истинный.
  4. Установка значение заголовка HTTP, как Content-Length, тип содержимого, и агент пользователя. Не забудьте установить значение Content-Length, как это является обязательным.
  5. Написать весь запрос SOAP в выходной поток.
  6. Вызов метода для установления соединения и получить ответ (В моем случае я использовал getResonseCode).
  7. Если полученный код ответа, как
    1. Это означает, что вы успешно вызвать веб-сервис.
  8. Теперь возьмите входной поток на то же соединение HTTP и получить строковый объект. Эта строка объект является ответом SOAP.
  9. Если код ответа отличен от 200 затем взять ErrorInputпоток на тот же HTTPobject и получить ошибку , если таковые имеются.
  10. Разбираем полученный ответ с использованием SAXParser (в моем случае) или DOMParaser или какой-либо другой механизм синтаксического анализа.

Я выполнил эту процедуру для Android телефона, и он успешно работает. Я могу разобрать ответ, даже если он более 700 Кб.

Ответил 04/02/2010 в 11:55
источник пользователем

голоса
27

SOAP является неподходящим технологии для использования на Android (или мобильные устройства в целом) из-за обработки / синтаксический анализ накладных расходов, что требуется. Отдыхают услуг является более легким решением, вес и то, что я хотел бы предложить. Android поставляется с SAX парсер, и это довольно тривиально использовать. Если вы абсолютно необходимо для обработки / разбора SOAP на мобильном устройстве, то мне жаль вас, лучший совет, который я могу предложить просто не использовать SOAP.

Ответил 12/01/2009 в 18:04
источник пользователем

голоса
23

НЕ ЗАБУДЬТЕ ДОБАВИТЬ ksoap2.jar в проекте, а также добавить разрешение INTERNET в AndroidManifest файле

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.PropertyInfo;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class WebserviceActivity extends Activity {

    private static final String NAMESPACE = "https://api.authorize.net/soap/v1/";
    private static final String URL ="https://apitest.authorize.net/soap/v1/Service.asmx?wsdl"; 
    private static final String SOAP_ACTION = "https://api.authorize.net/soap/v1/AuthenticateTest";
    private static final String METHOD_NAME = "AuthenticateTest";
    private TextView lblResult;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        lblResult = (TextView) findViewById(R.id.tv);

        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 
        request.addProperty("name","44vmMAYrhjfhj66fhJN");
        request.addProperty("transactionKey","9MDQ7fghjghjh53H48k7e7n");
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
        envelope.setOutputSoapObject(request);
        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
        try {
            androidHttpTransport.call(SOAP_ACTION, envelope);

            //SoapPrimitive  resultsRequestSOAP = (SoapPrimitive) envelope.getResponse();
            // SoapPrimitive  resultsRequestSOAP = (SoapPrimitive) envelope.getResponse();
            SoapObject resultsRequestSOAP = (SoapObject) envelope.bodyIn;


            lblResult.setText(resultsRequestSOAP.toString());
            System.out.println("Response::"+resultsRequestSOAP.toString());


        } catch (Exception e) {
            System.out.println("Error"+e);
        }

    }
}
Ответил 07/06/2012 в 07:50
источник пользователем

голоса
23

Примерно год назад я читал эту тему, пытаясь понять, как сделать SOAP звонки на Android - предложения, чтобы построить свой собственный, используя HttpClient привела меня строить свою собственную библиотеку SOAP для Android:

IceSoap

В основном это позволяет создать конверты для отправки через простой Java API, а затем автоматически анализирует их в объекты, которые вы определяете с помощью XPath ... например:

<Dictionary>
    <Id></Id>
    <Name></Name>
</Dictionary>

становится:

@XMLObject("//Dictionary")
public class Dictionary {
    @XMLField("Id")
    private String id;

    @XMLField("Name")
    private String name;
}

Я использовал его для моего собственного проекта, но я полагал, что это может помочь некоторым другим людям, так что я провел некоторое время, отделяя его и документирование. Я бы очень рад, если некоторые из ваших бедных душ, которые натыкаются на эту тему, а прибегая к помощи «SOAP Android» может дать ему пойти и получить какую-то выгоду.

Ответил 29/01/2012 в 12:56
источник пользователем

голоса
20

У меня был свиданье с KSOAP; Я выбрал довольно простой подход.

Учитывая WSDL-файл, создать SOAP-шаблоны запроса для каждого запроса (например, для: использования SOAP UI), а затем заменить значения, которые передаются в коде. POST эти данные для конечного обслуживания точки с использованием экземпляра DefaultHttpClient и получить поток ответа. Разбираем поток откликов с использованием XML парсера.

Ответил 21/12/2009 в 17:10
источник пользователем

голоса
16

Вы можете посмотреть на WSClient ++

Ответил 15/07/2010 в 09:52
источник пользователем

голоса
15

Я создал новый клиент SOAP для Android платформы. Он использует сгенерированный интерфейс JAX-WS, но это лишь проверка концепции до сих пор.

Если вы заинтересованы, пожалуйста , попробуйте пример и / или смотреть на источник AndroidSOAP .

Ответил 19/10/2010 в 16:42
источник пользователем

голоса
14

Если вы можете, пойти на JSON. Android поставляется с полным пакетом org.json

Ответил 23/12/2009 в 16:14
источник пользователем

голоса
13

Вызов ksoap2 методы. Она работает очень хорошо.

Установите детали, как

private static String mNAMESPACE=null;
private static String mURL=null;
public static Context context=null;
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(Request);

envelope.addMapping(mNAMESPACE, "UserCredentials",new UserCredendtials().getClass());
AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport(mURL);

а затем, чтобы получить результат делать

androidHttpTransport.call(SOAP_ACTION, envelope);
result = (SoapPrimitive)envelope.getResponse();
Ответил 18/05/2011 в 08:19
источник пользователем

голоса
12

Я надеюсь , что вызов веб - службы из Android помогает.

Ответил 25/04/2010 в 02:06
источник пользователем

голоса
9

Несколько месяцев назад я работал с JAX-WS веб - службы в j2ee приложения, Там мы использовали CXF wsdl2java для создания WS клиента окурок из файла WSDL и с теми клиентами окурков мы потребляли веб - служб. Несколько недель назад, когда я пытался потреблять веб - службу таким же образом , в андроиде платформы я не мог, потому что андроид баночка имеет не все «JAX-WS» вспомогательный классы в ней. На этот раз я не нашел такой инструмент (если я не был не в состоянии эффективно Google) , чтобы удовлетворить мое требование -

  • Получить клиента заглушки из WSDL.
  • И вызовите службу с некоторым аргументом (Java объектом запроса бизнеса).
  • Получить бизнес-объект.

Таким образом, я разработал свой собственный Android SOAP Client Generation Tool . Где вы должны выполнить следующие действия:

  • С WSDL Получить WS Client корешок Поместите его в свой проект.
  • Скажем, для некоторых услуг «ComplexOperationService», Инстанцировать Услугу Получить порт Endpoint и вызовите метод обслуживания, и получите ответ от веба-службы:

например:

ComplexOperationService service = new ComplexOperationService( );
ComplexOperation port= service.getComplexOperationPort();    
SomeComplexRequest request = --Get some complex request----;    
SomeComplexResp resp = port.operate( request  );
  • Вам не нужно заботиться о классах класса / REQ / ответ обслуживания или любых других классах и методе, а также, как вы знаете, его все генерируется из WSDL.
  • И, конечно, вам не нужно знать о действии мыла / обволакивает / пространство имен и т.д. Просто вызовите метод, как мы, разработчики делают все время.
Ответил 10/05/2012 в 16:53
источник пользователем

голоса
8

Я думаю , что вызов SOAP веб - службы из приложения Android поможет вам много.

Ответил 28/01/2011 в 11:35
источник пользователем

голоса
8

Я уверен , что вы могли бы сделать небольшую клиент SOAP с осью . Ось инструкции по установке .

Ответил 18/11/2008 в 18:49
источник пользователем

голоса
6

Для меня самый простой способ заключается в использовании хороший инструмент для создания всех необходимых классов. Лично я использую этот сайт:

http://easywsdl.com/

Он поддерживает довольно сложные веб-сервисы и использует ksoap2.

Ответил 13/11/2013 в 07:54
источник пользователем

голоса
6

Выполните следующие действия по методу SOAP

Из файла WSDL,

  • создать SOAP-шаблоны запроса для каждого запроса.

  • Затем подставьте значения, передаваемые в коде.

  • POST эти данные до конца службы точки с использованием экземпляра DefaultHttpClient.

  • Получить поток ответа и, наконец,

  • Разбираем поток откликов с использованием XML парсера.

Ответил 01/06/2012 в 10:20
источник пользователем

голоса
6

Если вы можете использовать JSON, есть официальный документ, видео и sample.code в разработке приложений служб с PHP серверов и телефонов клиентов для Android .

Ответил 24/04/2011 в 11:07
источник пользователем

голоса
5

Я хотел бы предложить проверить очень полезный инструмент, который помог мне много. Ребята, которые ухаживают этот проект были очень полезны, тоже. www.wsdl2code.com/

Ответил 28/05/2013 в 07:58
источник пользователем

голоса
4

Если у вас возникли проблемы относительно вызова веб - службы в Android Вы можете использовать ниже код для вызова веб - службы и получить ответ. Убедитесь , что веб - сервис возвращает ответ в таблице данных формат ..выполняется кода поможет вам , если вы используете данные из SQL Server базы данных. Если вы используете MYSQL вам нужно изменить одну вещь просто заменить слово NewDataSet из предложения obj2=(SoapObject) obj1.getProperty("NewDataSet");по DocumentElement

void callWebService(){ 

private static final String NAMESPACE = "http://tempuri.org/"; // for wsdl it may be package name i.e http://package_name
private static final String URL = "http://localhost/sample/services/MyService?wsdl";
// you can use IP address instead of localhost
private static final String METHOD_NAME = "Function_Name";
private static final String SOAP_ACTION = "urn:" + METHOD_NAME;

    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
    request.addProperty("parm_name", prm_value);// Parameter for Method
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.dotNet = true;// **If your Webservice in .net otherwise remove it**
    envelope.setOutputSoapObject(request);
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

    try {
        androidHttpTransport.call(SOAP_ACTION, envelope);// call the eb service
                                                                                                         // Method
    } catch (Exception e) {
        e.printStackTrace();
    }

    // Next task is to get Response and format that response
    SoapObject obj, obj1, obj2, obj3;
    obj = (SoapObject) envelope.getResponse();
    obj1 = (SoapObject) obj.getProperty("diffgram");
    obj2 = (SoapObject) obj1.getProperty("NewDataSet");

    for (int i = 0; i < obj2.getPropertyCount(); i++) { 
// the method getPropertyCount() and  return the number of rows
            obj3 = (SoapObject) obj2.getProperty(i);
            obj3.getProperty(0).toString();// value of column 1
            obj3.getProperty(1).toString();// value of column 2
            // like that you will get value from each column
        }
    }

Если у вас есть какие-либо проблемы относительно этого вы можете написать мне ..

Ответил 21/05/2012 в 09:20
источник пользователем

голоса
3

Пожалуйста , скачайте и добавьте файл библиотека SOAP с проектом Именем файла: ksoap2-андроидом-сборочно-3.4.0-банка-с зависимостями

Очистите приложение, а затем запустить программу

Вот код для вызова службы SOAP

    String SOAP_ACTION = "YOUR_ACTION_NAME";
    String METHOD_NAME = "YOUR_METHOD_NAME";
    String NAMESPACE = "YOUR_NAME_SPACE";
    String URL = "YOUR_URL";
    SoapPrimitive resultString = null;

    try {
        SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME);
        addPropertyForSOAP(Request);

        SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        soapEnvelope.dotNet = true;
        soapEnvelope.setOutputSoapObject(Request);

        HttpTransportSE transport = new HttpTransportSE(URL);

        transport.call(SOAP_ACTION, soapEnvelope);
        resultString = (SoapPrimitive) soapEnvelope.getResponse();

        Log.i("SOAP Result", "Result Celsius: " + resultString);
    } catch (Exception ex) {
        Log.e("SOAP Result", "Error: " + ex.getMessage());
    }
    if(resultString != null) {
        return resultString.toString();
    }
    else{
        return "error";
    }

Результаты могут быть JSONObject или JSONArray или строка

Для улучшения справки, https://trinitytuts.com/load-data-from-soap-web-service-in-android-application/

Благодарю.

Ответил 08/12/2015 в 13:02
источник пользователем

голоса
3

Это рабочий пример употребления SOAP веб-службы в андроида.

** Примечание :: *** НЕ ЗАБУДЬТЕ ДОБАВИТЬ ksoap2.jar в проекте, а также добавить разрешение INTERNET в AndroidManifest файле *

public final String WSDL_TARGET_NAMESPACE = "http://tempuri.org/";
public final String METHOD_NAME = "FahrenheitToCelsius";
public final String PROPERTY_NAME = "Fahrenheit";
public final String SOAP_ACTION = "http://tempuri.org/FahrenheitToCelsius";
public final String SOAP_ADDRESS = "http://www.w3schools.com/webservices/tempconvert.asmx";


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

    @Override
    protected void onPostExecute(String result) {

        super.onPostExecute(result);
        Toast.makeText(getApplicationContext(),
                String.format("%.2f", Float.parseFloat(result)),
                Toast.LENGTH_SHORT).show();
    }

    @Override
    protected String doInBackground(String... params) {
        SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE,
                METHOD_NAME);
        request.addProperty(PROPERTY_NAME, params[0]);

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

        envelope.setOutputSoapObject(request);

        HttpTransportSE androidHttpTransport = new HttpTransportSE(
                SOAP_ADDRESS);
        Object response = null;
        try {

            androidHttpTransport.call(SOAP_ACTION, envelope);
            response = envelope.getResponse();
            Log.e("Object response", response.toString());

        } catch (Exception e) {
            e.printStackTrace();
        }
        return response.toString();
    }
}
Ответил 30/07/2013 в 06:33
источник пользователем

голоса
2

Вы можете выполнить мыльный вызов как пост через HTTP с некоторыми заголовками. Я решил этот вопрос без дополнительных библиотек, как ksoap2 Здесь становится живой код заказов от мыла службы

private static HashMap<String,String> mHeaders = new HashMap<>();

static {
    mHeaders.put("Accept-Encoding","gzip,deflate");
    mHeaders.put("Content-Type", "application/soap+xml");
    mHeaders.put("Host", "35.15.85.55:8080");
    mHeaders.put("Connection", "Keep-Alive");
    mHeaders.put("User-Agent","AndroidApp");
    mHeaders.put("Authorization","Basic Q2xpZW50NTkzMzppMjR3s2U="); // optional
}public final static InputStream receiveCurrentShipments(String stringUrlShipments)
{
    int status=0;
    String xmlstring= "<soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\" xmlns:ser=\"http://35.15.85.55:8080/ServiceTransfer\">\n" +
            "   <soap:Header/>\n" +
            "   <soap:Body>\n" +
            "      <ser:GetAllOrdersOfShipment>\n" +
            "         <ser:CodeOfBranch></ser:CodeOfBranch>\n" +
            "      </ser:GetAllOrdersOfShipment>\n" +
            "   </soap:Body>\n" +
            "</soap:Envelope>";
    StringBuffer chaine = new StringBuffer("");

    HttpURLConnection connection = null;
    try {
        URL url = new URL(stringUrlShipments);
        connection = (HttpURLConnection) url.openConnection();
        connection.setRequestProperty("Content-Length", xmlstring.getBytes().length + "");
        connection.setRequestProperty("SOAPAction", "http://35.15.85.55:8080/ServiceTransfer/GetAllOrdersOfShipment");

        for(Map.Entry<String, String> entry : mHeaders.entrySet()) {
            String key = entry.getKey();
            String value = entry.getValue();
            connection.setRequestProperty(key,value);

        }

        connection.setRequestMethod("POST");
        connection.setDoInput(true);

        OutputStream outputStream = connection.getOutputStream();
        outputStream.write(xmlstring.getBytes("UTF-8"));
        outputStream.close();

        connection.connect();
        status = connection.getResponseCode();
    } catch (ProtocolException e) {
        e.printStackTrace();
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {

        Log.i("HTTP Client", "HTTP status code : " + status);
    }

    InputStream inputStream = null;
    try {
        inputStream = connection.getInputStream();
    } catch (IOException e) {
        e.printStackTrace();
    }

    return inputStream;
}
Ответил 19/08/2016 в 05:42
источник пользователем

голоса
2

Для вызова SOAP веб-службы от андроида, попробуйте использовать этот клиент

НЕ ЗАБУДЬТЕ ДОБАВИТЬ ksoap2-android.jar в вашем Java пути сборки

public class WsClient {
    private static final String SOAP_ACTION = "somme";
    private static final String OPERATION_NAME = "somme";
    private static final String WSDL_TARGET_NAMESPACE = "http://example.ws";
    private static final String SOAP_ADDRESS = "http://192.168.1.2:8080/axis2/services/Calculatrice?wsdl";

    public String caclculerSomme() {

        String res = null;
        SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE,
                OPERATION_NAME);
        request.addProperty("a", "5");
        request.addProperty("b", "2");

        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                SoapEnvelope.VER11);
        envelope.dotNet = true;
        envelope.setOutputSoapObject(request);
        HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS);

        try {
            httpTransport.call(SOAP_ACTION, envelope);
            String result = envelope.getResponse().toString();
            res = result;
            System.out.println("############# resull is :" + result);
        } catch (Exception exception) {
            System.out.println("########### ERRER" + exception.getMessage());
        }

        return res;
    }
}
Ответил 07/06/2012 в 01:13
источник пользователем

голоса
1

Добавить мыло Libaray ( ksoap2-android-assembly-3.2.0-jar-with-dependencies.jar):

общественности статической строки Fn_Confirm_CollectMoney_Approval (

        HashMap < String, String > str1,
        HashMap < String, String > str2,
        HashMap < String, String > str3) {

    Object response = null;
    String METHOD_NAME = "CollectMoney";
    String NAMESPACE = "http://xxx/yyy/xxx";
    String URL = "http://www.w3schools.com/webservices/tempconvert.asmx";
    String SOAP_ACTION = "";

    try {

        SoapObject RequestParent = new SoapObject(NAMESPACE, METHOD_NAME);

        SoapObject Request1 = new SoapObject(NAMESPACE, "req");

        PropertyInfo pi = new PropertyInfo();

        Set mapSet1 = (Set) str1.entrySet();

        Iterator mapIterator1 = mapSet1.iterator();

        while (mapIterator1.hasNext()) {

            Map.Entry mapEntry = (Map.Entry) mapIterator1.next();

            String keyValue = (String) mapEntry.getKey();

            String value = (String) mapEntry.getValue();

            pi = new PropertyInfo();

            pi.setNamespace("java:com.xxx");

            pi.setName(keyValue);

            pi.setValue(value);

            Request1.addProperty(pi);
        }

        mapSet1 = (Set) str3.entrySet();

        mapIterator1 = mapSet1.iterator();

        while (mapIterator1.hasNext()) {

            Map.Entry mapEntry = (Map.Entry) mapIterator1.next();

            // getKey Method of HashMap access a key of map
            String keyValue = (String) mapEntry.getKey();

            // getValue method returns corresponding key's value
            String value = (String) mapEntry.getValue();

            pi = new PropertyInfo();

            pi.setNamespace("java:com.xxx");

            pi.setName(keyValue);

            pi.setValue(value);

            Request1.addProperty(pi);
        }

        SoapObject HeaderRequest = new SoapObject(NAMESPACE, "XXX");

        Set mapSet = (Set) str2.entrySet();

        Iterator mapIterator = mapSet.iterator();

        while (mapIterator.hasNext()) {

            Map.Entry mapEntry = (Map.Entry) mapIterator.next();

            // getKey Method of HashMap access a key of map
            String keyValue = (String) mapEntry.getKey();

            // getValue method returns corresponding key's value
            String value = (String) mapEntry.getValue();

            pi = new PropertyInfo();

            pi.setNamespace("java:com.xxx");

            pi.setName(keyValue);

            pi.setValue(value);

            HeaderRequest.addProperty(pi);
        }

        Request1.addSoapObject(HeaderRequest);

        RequestParent.addSoapObject(Request1);

        SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(
                SoapEnvelope.VER10);

        soapEnvelope.dotNet = false;

        soapEnvelope.setOutputSoapObject(RequestParent);

        HttpTransportSE transport = new HttpTransportSE(URL, 120000);

        transport.debug = true;

        transport.call(SOAP_ACTION, soapEnvelope);

        response = (Object) soapEnvelope.getResponse();

        int cols = ((SoapObject) response).getPropertyCount();

        Object objectResponse = (Object) ((SoapObject) response)
                .getProperty("Resp");

        SoapObject subObject_Resp = (SoapObject) objectResponse;


        modelObject = new ResposeXmlModel();

        String MsgId = subObject_Resp.getProperty("MsgId").toString();


        modelObject.setMsgId(MsgId);

        String OrgId = subObject_Resp.getProperty("OrgId").toString();


        modelObject.setOrgId(OrgId);

        String ResCode = subObject_Resp.getProperty("ResCode").toString();


        modelObject.setResCode(ResCode);

        String ResDesc = subObject_Resp.getProperty("ResDesc").toString();


        modelObject.setResDesc(ResDesc);

        String TimeStamp = subObject_Resp.getProperty("TimeStamp")
                .toString();


        modelObject.setTimestamp(ResDesc);

        return response.toString();

    } catch (Exception ex) {

        ex.printStackTrace();

        return null;
    }

}
Ответил 30/05/2016 в 11:27
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more