Как вызвать веб-сервисы SAP SOAP из Android? с именем пользователя и паролем. - PullRequest
1 голос
/ 17 февраля 2012
package com.venkat.pack;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class SOAPClientActivity extends Activity {
    private static final String SOAP_ACTION = "Z_CUSTOMER_LOOKUP";
    private static final String METHOD_NAME = "Z_CUSTOMER_LOOKUP";
    private static final String NAMESPACE = "urn:sap-com:document:sap:soap:functions:mc-style";
    private static final String URL = "http://*********:8000/sap/bc/srt/wsdl/srvc_14DAE9C8D79F1EE193CF0AB8FEE64345/wsdl11/allinone/ws_policy/document?sap-client=*****"; //this is my wsdl url.

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button btTest = (Button) this.findViewById(R.id.btTest);
        btTest.setOnClickListener(btTestListener);


    //whenever click the button 
    }

    public Button.OnClickListener btTestListener = new Button.OnClickListener() {
        public void onClick(View v) {
            try {


                // Create SOAP request
                SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

                SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
                envelope.setOutputSoapObject(request);
                HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
                androidHttpTransport.call(SOAP_ACTION, envelope);

                // Get response from envelope
                Object result = envelope.getResponse();

                // Display result
                Toast.makeText(SOAPClientActivity.this, result.toString(),
                        50000).show();

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

Где я могу добавить имя пользователя и пароль в коде выше. Когда я запускаю программу, я получил следующее исключение в logcat My eclipse:02-17 18:33:35.254: WARN/System.err(608): org.xmlpull.v1.XmlPullParserException: expected: START_TAG {http://schemas.xmlsoap.org/soap/envelope/}Envelope (position:START_TAG <{http://schemas.xmlsoap.org/wsdl/}wsdl:definitions targetNamespace='urn:sap-com:document:sap:soap:functions:mc-style'>@1:686 in java.io.InputStreamReader@40554888)

Ответы [ 2 ]

0 голосов
/ 20 февраля 2012

В вашем случае вам нужно позвонить в веб-сервис SAP с базовой аутентификацией. Используйте HttpTransportBasicAuth вместо HttpTransportSE, см. Пример ниже, показывающий, как позвонить HttpTransportBasicAuth

  HttpTransportBasicAuth aht = new  HttpTransportBasicAuth(url, username, password); 

Дайте нам знать, если это работает или нужна дополнительная информация.

0 голосов
/ 18 февраля 2012

SAP позволяет добавлять параметры sap-user и sap-password в качестве параметров URL (как это происходит с sap-client).Попробуйте, это должно решить проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...