Как добавить заголовок, имя пользователя, пароль веб-службы sharepoint с помощью ksoap в Android - PullRequest
1 голос
/ 18 июля 2011

Я пишу приложение для Android, которое будет использовать метод getlistitems () службы lists.amx в sharepoint 2010. Я использую ksoap2-android для обработки своих мыльных сообщений.Когда я пытаюсь аутентифицироваться, я получаю ожидаемое исключение xmlpullparser START_TAG ... Почему следующий код не аутентифицируется на сервере sharepoint?

private static final String SOAP_ACTION = "http://schemas.microsoft.com/sharepoint/soap/GetListItems";
private static final String METHOD_NAME = "GetListItems";
private static final String NAMESPACE = "http://schemas.microsoft.com/sharepoint/soap/";
private static final String URL = "http://www.domain.com/tr-TR/_vti_bin/Lists.asmx";

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

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

    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);


    request.addProperty("listName", "Haberler");
    request.addProperty("viewName", null);
    request.addProperty("query", null);
    request.addProperty("viewFields", null);
    request.addProperty("rowLimit", "30");
    request.addProperty("queryOptions", null);
    request.addProperty("webID",null);




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

// envelope.headerOut = new Element [1];// envelope.headerOut [0] = buildAuthHeader ();

    String authentication = android.util.Base64.encodeToString("myusername:mypassword".getBytes(), android.util.Base64.NO_WRAP);
    List<HeaderProperty> headers = new ArrayList<HeaderProperty>();
    headers.add(new HeaderProperty("X-FORMS_BASED_AUTH_ACCEPTED","f" +authentication));

    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
    androidHttpTransport.debug = true;

    try {
        androidHttpTransport.call(SOAP_ACTION, envelope,headers);
        SoapObject response = (SoapObject) envelope.getResponse();

        tv.setText(response.toString());
        Log.e("SONUC",response.toString());

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

Ответы [ 2 ]

0 голосов
/ 10 мая 2013

Попробуйте использовать NtlmTransport вместо HttpTransportSE. Может быть, это работает для вас.

0 голосов
/ 12 марта 2012

Не отправлять нулевые значения. Вместо этого добавьте все значения и попробуйте отправить их.

...