Jak volání SOAP webové služby na Androidu

hlasů
507

Mám hodně problémů najít dobré informace o tom, jak volat standardní SOAP / WSDL webové služby s operačním systémem Android. Všechno, co jsem byl schopen najít, jsou buď velmi spletité dokumenty a odkazy na „kSoap2“ a ještě něco navíc něco o analýze to všechno ručně SAX . OK, to je v pořádku, ale je to 2008, takže mě napadlo, že by měl být nějaký dobrý knihovnu pro volání standardní webové služby.

Webová služba je v podstatě jen jedno vytvořené v NetBeans . Chtěl bych mít podporu IDE pro generování instalatérské tříd. Potřebuju jen nejjednodušší / nejvíce elegantní způsob, jak se spojit s WSDL na bázi webové služby z telefonu Android založeného.

Položena 18/11/2008 v 02:32
zdroj uživatelem
V jiných jazycích...                            


26 odpovědí

hlasů
232

Android neposkytuje žádný druh SOAP knihovny. Buď můžete napsat svůj vlastní, nebo použít něco jako kSOAP 2 . Jak jste na vědomí, že jiní byli schopni sestavit a používat kSOAP2 ve svých vlastních projektech, ale já jsem musel.

Google ukázala, k dnešnímu dni, nemají velký zájem o přidání knihovnu SOAP Android. Mám podezření, je to, že by raději podporovat současné trendy v Web Services vůči služeb REST bázi a za použití JSON jako formát dat zapouzdření. Nebo s použitím XMPP pro zasílání zpráv. Ale to je jen dohad.

Založené na XML webové služby jsou poněkud non-triviální úkol na Android v tomto okamžiku. Nevěda, NetBeans, nemohu mluvit dostupných nástrojů tam, ale souhlasím s tím, že lepší knihovna by měla být k dispozici. Je možné, že XmlPullParser vám ušetří od pomocí SAX, ale já moc nevím o tom.

Odpovězeno 19/11/2008 v 22:50
zdroj uživatelem

hlasů
94

org.apache.http.impl.client.DefaultHttpClientDodává se v Android SDK ve výchozím nastavení. To bude mít jste připojeni k WSDL.

HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpGet httpGet = new HttpGet("http://www.example.com/" + URL);
HttpResponse response = httpClient.execute(httpGet, localContext);
Odpovězeno 08/01/2009 v 23:17
zdroj uživatelem

hlasů
56

Je pravda, že z důvodu, že je to nad hlavou SOAP není tou nejlepší volbou pro výměnu dat s mobilními zařízeními. Nicméně, můžete ocitnout v situaci, kdy nemáte přístup k formátu výstupu serveru.

Takže, pokud máte držet se SOAP, tam je knihovna kSOAP2 oprava pro Android zde:
http://code.google.com/p/ksoap2-android/

Odpovězeno 10/10/2009 v 11:57
zdroj uživatelem

hlasů
30

Chcete-li volat webovou službu z mobilního zařízení (zejména na telefonu Android), jsem použil velmi jednoduchý způsob, jak to udělat. Já jsem nepoužil žádné webové služby klienta API pokus o volání webové služby. Můj přístup je takto k uskutečnění hovoru.

  1. Vytvoření jednoduchého připojení prostřednictvím HTTP pomocí standardního API Javy HttpURLConnection.
  2. Vytvoří požadavek SOAP. (Můžete provést pomoc SOAPUI provést požadavek SOAP).
  3. Nastaven příznak doOutPut jako pravdivé.
  4. Nastavené hodnoty záhlaví HTTP jako content-length, typu obsahu, a uživatel-agent. Nezapomeňte nastavit Content-Length hodnotu, je to povinné.
  5. Napsat celý požadavek SOAP na výstupní proud.
  6. Volání metody, aby připojení a přijímat odezvu (V mém případě jsem použil getResonseCode).
  7. Pokud váš obdržel kód odpovědi as
    1. To znamená, že se podařilo zavolat webovou službu.
  8. Nyní se vstupní proud na stejné připojení HTTP a získat objekt řetězec. Tento objekt řetězec je odpověď SOAP.
  9. Je-li kód odezvy jiný než 200 pak se ErrorInputproud na stejné HTTPobject a dojde k chybě, pokud existuje.
  10. Analyzovat obdržené odpovědi pomocí SAXParser (v mém případě), nebo DOMParaser nebo jakýkoli jiný rozebrat mechanismus.

Jsem implementoval tento postup pro Android telefon, a to je úspěšně spuštěna. Jsem schopen analyzovat odpověď, i když je více než 700 KB.

Odpovězeno 04/02/2010 v 11:55
zdroj uživatelem

hlasů
27

SOAP je nevhodné technologie pro použití na Android (nebo mobilních zařízení obecně) kvůli zpracování / parsování režii, která je povinná. A služby REST je lehčí řešení, hmotnost a to je to, co bych navrhoval. Android přichází s SAX parser, a to je docela triviální použít. Pokud jste nezbytně nutné pro zpracování / analyzovat SOAP na mobilním zařízení, pak jsem tě líto, nejlepší rada, kterou mohu nabídnout, je prostě nepoužívat mýdlo.

Odpovězeno 12/01/2009 v 18:04
zdroj uživatelem

hlasů
23

NEZAPOMEŇTE ADD ksoap2.jar v projektu a také přidat oprávnění INTERNET v souboru 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);
        }

    }
}
Odpovězeno 07/06/2012 v 07:50
zdroj uživatelem

hlasů
23

Asi před rokem jsem četl toto vlákno se snaží přijít na to, jak to udělat SOAP volání na Android - návrhy na vybudování mé vlastní použití HttpClient vyústila ve mně budování své vlastní SOAP knihovnu pro Android:

IceSoap

V podstatě to vám umožní vybudovat obálky odeslat prostřednictvím jednoduchého Java API, pak automaticky analyzuje je na objekty, které definují pomocí XPath ... Například:

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

se stává:

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

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

Byl jsem pomocí to můj vlastní projekt, ale já myslel, že to může pomoci některým jiným lidem, takže jsem strávil nějaký čas oddělující jej ven a dokumentovat ji. Já bych opravdu rád, pokud některé z vašich ubožáků, kteří narazí na toto vlákno, zatímco googling „SOAP Android“ Mohlo by to dát jít a získat nějaké výhody.

Odpovězeno 29/01/2012 v 12:56
zdroj uživatelem

hlasů
20

Měl jsem schůzku s KSOAP; Zvolila jsem poněkud jednodušší přístup.

Vzhledem k tomu, soubor WSDL vytvořit SOAP Žádost šablony pro každý požadavek (pro např: pomocí rozhraní SOAP) a potom nahradit hodnoty, které mají být předány v kódu. POST tato data ke koncovému bodu služby s využitím DefaultHttpClient instanci a získat datový proud odpovědí. Analyzovat Response Stream pomocí XML parser Pull.

Odpovězeno 21/12/2009 v 17:10
zdroj uživatelem

hlasů
16

Můžete se podívat na WSClient ++

Odpovězeno 15/07/2010 v 09:52
zdroj uživatelem

hlasů
15

Vytvořil jsem novou SOAP klient pro platformu Android. To je pomocí vygenerovaného rozhraní JAX-WS, ale jedná se pouze o proof-of-concept doposud.

Máte-li zájem, zkuste si příklad a / nebo sledovat zdroj na AndroidSOAP .

Odpovězeno 19/10/2010 v 16:42
zdroj uživatelem

hlasů
14

Pokud je to možné, jít na JSON. Android přichází s kompletní balení org.json

Odpovězeno 23/12/2009 v 16:14
zdroj uživatelem

hlasů
13

Zavolej ksoap2 metody. Funguje to velmi dobře.

Nastavit podrobnosti, jako je

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

a pak se dostat výsledek dělat

androidHttpTransport.call(SOAP_ACTION, envelope);
result = (SoapPrimitive)envelope.getResponse();
Odpovězeno 18/05/2011 v 08:19
zdroj uživatelem

hlasů
12

Doufám Volání webové služby z Android pomáhá.

Odpovězeno 25/04/2010 v 02:06
zdroj uživatelem

hlasů
9

Před několika měsíci jsem pracoval s Jax-WS webové služby v J2EE aplikací, tam jsme používali CXF wsdl2java generovat WS klienta pahýl ze souboru WSDL a s těmito klienty pahýlů jsme spotřebované na webové služby. Před několika týdny, když jsem se snažil konzumovat webové služby stejným způsobem v platformě Android jsem nemohl, protože android jar má ne všechny „JAX-WS“ podpůrné třídy v něm. V té době jsem nenašel žádný takový nástroj (pokud nebyl jsem nedokázal účinně google) splnit svůj požadavek -

  • Získat klienta pahýl z WSDL.
  • A zavolat službu s nějakým argumentem (Java objekt požadavku business).
  • Získat Response Obchodní objekt.

Tak jsem vyvinul svůj vlastní Android SOAP klient Generation Tool . Kde budete muset provést následující kroky:

  • Od WSDL Získat WS Client Stub, vložte ji do svého projektu.
  • Řekněme, že pro nějakou službu „ComplexOperationService“ Vytvoření instance službu, si port Endpoint a volání metody služby a získat odpověď z webové služby:

např:

ComplexOperationService service = new ComplexOperationService( );
ComplexOperation port= service.getComplexOperationPort();    
SomeComplexRequest request = --Get some complex request----;    
SomeComplexResp resp = port.operate( request  );
  • Nemusíte se starat o tříd třída / req / odezvy služeb nebo jakékoliv jiné třídy a metody, stejně, jak víte, její vše jsou generovány z WSDL.
  • A samozřejmě, že nemusí být vědomi akce mýdlo / obálka / namespace atd. Stačí zavolat metodu jako my, vývojáři dělají pořád.
Odpovězeno 10/05/2012 v 16:53
zdroj uživatelem

hlasů
8

Myslím, že Call SOAP webové služby z aplikace pro Android vám pomůže hodně.

Odpovězeno 28/01/2011 v 11:35
zdroj uživatelem

hlasů
8

Jsem si jist, že byste mohli udělat trochu SOAP klientovi Axis . Pokyny k instalaci osa .

Odpovězeno 18/11/2008 v 18:49
zdroj uživatelem

hlasů
6

Pro mě je nejjednodušší způsob, jak je použít dobrý nástroj pro generování všech požadovaných tříd. Já osobně používat tuto stránku:

http://easywsdl.com/

Podporuje velmi komplexní webové služby a využívá ksoap2.

Odpovězeno 13/11/2013 v 07:54
zdroj uživatelem

hlasů
6

Postupujte podle následujících kroků metodou SOAP

Ze souboru WSDL,

  • Vytvoření SOAP Žádost šablony pro každý požadavek.

  • Pak nahradit hodnoty, které mají být předány v kódu.

  • POST tato data ke koncovému bodu služby s využitím DefaultHttpClient instanci.

  • Získejte proud odezvy a konečně

  • Analyzovat Response Stream pomocí XML parser Pull.

Odpovězeno 01/06/2012 v 10:20
zdroj uživatelem

hlasů
6

Pokud můžete použít JSON, tam je whitepaper, video a sample.code na vývoj aplikací služby s PHP servery a Android telefony klienty .

Odpovězeno 24/04/2011 v 11:07
zdroj uživatelem

hlasů
5

Navrhoval bych odhlašování velmi užitečný nástroj, který mi hodně pomohl. Kluci, kteří se starají o tomto projektu byly velmi užitečné, taky. www.wsdl2code.com/

Odpovězeno 28/05/2013 v 07:58
zdroj uživatelem

hlasů
4

Pokud máte problém, pokud jde o volání webové služby v android pak můžete použít pod kódem pro volání webové služby a dostat odpověď. Ujistěte se, že vaše webová služba vrátí odezvu v datové tabulce formátu ..This kódu vám pomůže, pokud na základě dat z SQL Server databáze. Pokud používáte MySQL je nutné změnit jednu věc jen nahradit slovní NewDataSet z trestu obj2=(SoapObject) obj1.getProperty("NewDataSet");by 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
        }
    }

Pokud máte nějaký problém týkající se tohoto můžete mi napsat ..

Odpovězeno 21/05/2012 v 09:20
zdroj uživatelem

hlasů
3

Stáhněte si a přidat soubor SOAP knihovny se váš projekt název souboru: ksoap2-android-montáž-3.4.0-jar-s-závislostmi

Vyčistěte aplikaci a pak spustit program

Zde je kód pro servisní volání 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";
    }

Tyto výsledky mohou být JSONObject nebo JSONArray Or String

Pro vaši lepší orientaci, https://trinitytuts.com/load-data-from-soap-web-service-in-android-application/

Dík.

Odpovězeno 08/12/2015 v 13:02
zdroj uživatelem

hlasů
3

Jedná se o pracovní příklad náročné SOAP webové služby v android.

** Poznámka :: *** NEZAPOMEŇTE ADD ksoap2.jar v projektu a také přidat oprávnění na internet v souboru 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();
    }
}
Odpovězeno 30/07/2013 v 06:33
zdroj uživatelem

hlasů
2

Můžete provést mýdlo volání jako příspěvek přes http s některými hlaviček. Vyřešil jsem tuto otázku bez dalších knihoven jako ksoap2 Zde je živý kód dostat objednávky od mýdla služby

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;
}
Odpovězeno 19/08/2016 v 05:42
zdroj uživatelem

hlasů
2

Chcete-li volat SOAP webová služba z android, zkuste použít tento klient

NEZAPOMEŇTE ADD ksoap2-android.jar v java sestavení cesty

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;
    }
}
Odpovězeno 07/06/2012 v 01:13
zdroj uživatelem

hlasů
1

Přidejte mýdlo Libaray ( ksoap2-android-assembly-3.2.0-jar-with-dependencies.jar):

public static String 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;
    }

}
Odpovězeno 30/05/2016 v 11:27
zdroj uživatelem

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