web-dev-qa-db-ja.com

Android WSDL / SOAPサービスクライアント

通信にWSDL/SOAPを使用するWebサービスがいくつかあります。具体的には、PHPとNusoapを使用してそれらを作成しています。これらのWebサービスをAndroidで使用するにはどうすればよいですか?新しい電話Android 、私は知る必要があります。

Windows MobileとVisual Studioを使用すると簡単です。

ありがとう

25
QAH

AndroidにはSOAPライブラリが付属していません。ただし、サードパーティのライブラリはここからダウンロードできます。
https://github.com/simpligility/ksoap2-Android

それを使用するのに助けが必要な場合、このスレッドが役に立つかもしれません:
KSOAP2を使用してAndroidから.NET Webサービスを呼び出す方法

21
Viktor Brešan

Android code、

http://www.wsdl2code.com/Example.aspx

public void callWebService(){
    SampleService srv1 = new SampleService();
    Request req = new Request();
    req.companyId = "1";
    req.userName = "userName";
    req.password = "pas";
    Response response =  srv1.ServiceSample(req);
}
10
Bennya

SOAPプラットフォーム用の新しいAndroidクライアントを作成しました。JAX-WSで生成されたインターフェースを使用していますが、これはまだ概念実証にすぎません。

興味のある方は、例を試してみてください、そして/またはソースを見てください: http://wiki.javaforum.hu/display/ANDROIDSOAP/Home

更新:バージョン0.0.4がチュートリアルと共にリリースされました:

http://wiki.javaforum.hu/display/ANDROIDSOAP/2012/04/16/Version+0.0.4+released

http://wiki.javaforum.hu/display/ANDROIDSOAP/Step+by+step+tutorial

5
Gábor AUTH

Icesoap 、昨日見つけたが、有望に見える。基本的なテストで機能しましたが、例が不足しています。

1
ecdpalma
private static  final  String NAMESPACE = "http://tempuri.org/";
private static  final String URL = "http://example.com/CRM/Service.svc";
private static  final  String SOAP_ACTION = "http://tempuri.org/Login";
private static  final String METHOD_NAME = "Login";


//calling web services method

String loginresult=callService(username,password,usertype);


//calling webservices
String callService(String a1,String b1,Integer c1) throws Exception {

            Boolean flag=true;
            do
            {
                try{
                    System.out.println(flag);

                SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

                PropertyInfo pa1 = new PropertyInfo();
                pa1.setName("Username");
                pa1.setValue(a1.toString());

                PropertyInfo pb1 = new PropertyInfo();
                pb1.setName("Password");
                pb1.setValue(b1.toString());

                PropertyInfo pc1 = new PropertyInfo();
                pc1.setName("UserType");
                pc1.setValue(c1);
                System.out.println(c1+"this is integer****s");




                System.out.println("new");
                request.addProperty(pa1);
                request.addProperty(pb1);
                request.addProperty(pc1);



                System.out.println("new2");
                SoapSerializationEnvelope envelope = new    SoapSerializationEnvelope(SoapEnvelope.VER11);
                envelope.dotNet = true;
                System.out.println("new3");
                envelope.setOutputSoapObject(request);
                HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
                androidHttpTransport.setXmlVersionTag("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
                System.out.println("new4");
                try{
                androidHttpTransport.call(SOAP_ACTION, envelope);
                }
                catch(Exception e)
                {

                    System.out.println(e+"   this is exception");
                }
                System.out.println("new5");
                SoapObject response = (SoapObject)envelope.bodyIn;

                result = response.getProperty(0).toString(); 

                flag=false;
                System.out.println(flag);
                }catch (Exception e) {
                // TODO: handle exception
                    flag=false;
            }
            }
            while(flag);
            return result;

        }  
///
1
isha

私はちょうどAndroid wsdlについてのアプリを完了しました、私は追加するいくつかのヒントがあります:

1.最も重要なリソースは www.wsdl2code.com

2.次のようなBase64でエンコードされたヘッダーを持つユーザー名とパスワードを取得できます。

        String USERNAME = "yourUsername";
    String PASSWORD = "yourPassWord";
    StringBuffer auth = new StringBuffer(USERNAME);
    auth.append(':').append(PASSWORD);
    byte[] raw = auth.toString().getBytes();
    auth.setLength(0);
    auth.append("Basic ");
    org.kobjects.base64.Base64.encode(raw, 0, raw.length, auth);
    List<HeaderProperty> headers = new ArrayList<HeaderProperty>();
    headers.add(new HeaderProperty("Authorization", auth.toString())); // "Basic V1M6"));

    Vectordianzhan response = bydWs.getDianzhans(headers);

3.somethimes、あなたはAndroidコードまたはウェブサーバーが間違っているのかわからない、それからデバッグが重要です。さらに、adbでIPパッケージをキャッチする必要があります。

    try {
    Logg.i(TAG, "2  ");
    Object response = androidHttpTransport.call(SOAP_ACTION, envelope, headers); 
    Logg.i(TAG, "requestDump: " + androidHttpTransport.requestDump);
    Logg.i(TAG, "responseDump: "+ androidHttpTransport.responseDump);
    Logg.i(TAG, "3");
} catch (IOException e) {
    Logg.i(TAG, "IOException");
} 
catch (XmlPullParserException e) {
     Logg.i(TAG, "requestDump: " + androidHttpTransport.requestDump);
     Logg.i(TAG, "responseDump: "+ androidHttpTransport.responseDump);
     Logg.i(TAG, "XmlPullParserException");
     e.printStackTrace();
}
1
alterli