Я пытаюсь подключить свое приложение Android к веб-сервису. я написал новый класс и определить некоторые переменные:Android Studio Webservice call «Ошибка HTTP-запроса, статус HTTP: 401» Неавторизованный
I've получил Async класса использовать сеть
class GetValueTask extends AsyncTask<ApiConnector,Long,String> {
@Override
protected String doInBackground(ApiConnector... params) {
//wird im Background Thread ausgeführt
return params[0].getValue();
}
@Override
protected void onPostExecute(String s) {
//wird im Mainthread ausgeführt
MainActivity.this.setText(s);
}
}
И у меня есть класс, где я хочу назвать WebService
public class ApiConnector
{
private static final String SOAP_ACTION ="urn:microsoft-dynamics-schemas/codeunit/AddService:Add";
private static final String METHOD_NAME ="Add";
private static final String NAMESPACE ="urn:microsoft-dynamics-schemas/codeunit/AddService";
private static final String URL ="http://192.168.0.154:9047/DynamicsNAV80/WS/CRONUS%20AG/Codeunit/AddService";
private static final String USERNAME="B.Denger";
private static final String PASSWORD ="TestPW123!";
public String getValue() {
SoapObject request = new SoapObject(NAMESPACE,METHOD_NAME);
request.addProperty("no","10");
PropertyInfo unamePI = new PropertyInfo();
PropertyInfo passPI = new PropertyInfo();
// Set Username
unamePI.setName("username");
// Set Value
unamePI.setValue(USERNAME);
// Set dataType
unamePI.setType(String.class);
// Add the property to request object
request.addProperty(unamePI);
//Set Password
passPI.setName("password");
//Set dataType
passPI.setValue(PASSWORD);
//Set dataType
passPI.setType(String.class);
//Add the property to request object
request.addProperty(passPI);
SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
soapEnvelope.setOutputSoapObject(request);
HttpTransportSE aht= new HttpTransportSE(URL);
try {
aht.call(SOAP_ACTION, soapEnvelope);
SoapPrimitive resultString = (SoapPrimitive) soapEnvelope.getResponse();
return resultString.toString();
}catch(Exception e) {
e.printStackTrace();
return "Fail at Call";
}
}
}
Я установил с помощью-разрешения в файле манифеста
<uses-permission android:name="android.permission.INTERNET"/>
в моем MainActivity ли я выполнить AsynkTask с кнопкой
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
GetValueTask getValueTask = new GetValueTask();
getValueTask.execute(new ApiConnector());
}
});
после выполнения я получаю после вступления LogCat:
W/System.err﹕ org.ksoap2.transport.HttpResponseException: HTTP request failed, HTTP status: 401
я гугл целого дня для него, но я не решил эту проблему еще. есть ли кто-нибудь, кто мог бы мне помочь, или мог бы дать мне подсказку, где я должен искать?
вам удалось использовать эти учетные данные где-то еще, как браузер или скрипач/wirehark/etc? – nasch
Да, я могу вызвать WS с помощью Internet Explorer –