В VS C #

ужно использовать веб-сервис SOAP с помощью Android.

Проблема в том, что перед запросом определенной функции мне нужно аутентифицировать клиента, используя базовый http-запрос.

Знаете ли вы, как сделать это с помощью KSOAP?

До этого момента я пытался использовать перегруженный метод httpsTransportSE.call (), поскольку он предполагает, что я могу указать дополнительные заголовки для http-соединения.

(Ссылка:https://github.com/mosabua/ksoap2-android/blob/master/ksoap2-j2se/src/main/java/org/ksoap2/transport/HttpTransportSE.java)

headerPropertyList.add(new HeaderProperty("Authorization", "Basic : dXNlcjpwYXNz"));

«cdXNlcjpwYXNz» - это строка в кодировке base 64 «user: pass»

 public List call(String soapAction, SoapEnvelop,e envelope, List headers)
    * @param headers a list of HeaderProperties to be http header properties when establishing the connection



private static final String SOAP_ACTION = "someaddress/IPortReporting/GetPortStatus";
private static final String METHOD_NAME = "methodname";
private static final String NAMESPACE = "http://ssn.someaddress/2.0/";
private static final String URL = "new.someaddress/functionName.svc";




SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME);
        Request.addProperty("MessageId", "1");

        SoapSerializationEnvelope soapEnvelop = new SoapSerializationEnvelope(
                11);
        //soapEnvelop.headerOut = addHeaders(); 
        soapEnvelop.dotNet = true;
        soapEnvelop.setOutputSoapObject(Request);


        List<HeaderProperty> headerPropertieList = new ArrayList<HeaderProperty>();
        headerPropertyList.add(new HeaderProperty("Authorization", "Basic : cG9ydHdzOjEyM3F3ZUFTRA=="));
        //HeaderProperty headerProperty = new HeaderProperty()

        HttpsTransportSE httpsse = new HttpsTransportSE(URL, 443, "", 5000);



        try {
            httpsse.call(SOAP_ACTION, soapEnvelop, headerPropertyList);
            //httpsse.call(SOAP_ACTION, soapEnvelop);

            SoapPrimitive resultString = (SoapPrimitive) soapEnvelop
                    .getResponse();
            tv.setText("Status: ");
        } catch (Exception e) {
            tv.setText("Some error," + " "
                    + e.getMessage());
        }

Но у меня есть сообщение «Отказано в доступе».

Ответы на вопрос(6)

Ваш ответ на вопрос