У меня есть приложение для Android, которое использует веб-сервис .Net, для которого я использую ksoap2. Я хочу передать учетные данные (имя пользователя и пароль) , поэтому мне нужно использовать тип аутентификации (форма, Basic, ...) , но я не знаю как.
Я скачал защищенный WebService (этот пример запроса учетных данных) с:
Безопасность веб-сервисов
[WebMethod]
public string HelloWorld()
{
return "Hello " + Context.User.Identity.Name;
}
Я вызываю webMethod с базовым кодом, и поэтому я получаю ошибку, где-то мне нужно передать имя пользователя и пароль , но я не знаю, как . Есть ссылки, которые используют NTCredentials, envelope.headerOut и HeaderProperty (класс, которого у меня нет), я пробую все и ничего.
public String getStringWebService()
{
String namespaceServicio;
String nombreMetodo;
namespaceServicio = "http://tempuri.org/";
nombreMetodo = "HelloWorld";
accionSoap = namespaceServicio + nombreMetodo;
urlServicio = "http://???.???.???/Prueba/Autenticacion/AuthTestSvc/Service1.asmx";
SoapObject request = new SoapObject(namespaceServicio, nombreMetodo);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.bodyOut = request;
envelope.dotNet = true;
envelope.encodingStyle = SoapEnvelope.XSD;
HttpTransportSE ht = new HttpTransportSE(urlServicio);
ht.debug = true;
String cad = "";
try
{
String xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
" <soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
" <soap:Header>" +
" <AUTHHEADER xmlns=\"http://tempuri.org/\" />" +
" <username>test</username> " +
" <password>test</password> " +
" </AUTHHEADER> " +
" </soap:Header> " +
" <soap:Body> " +
" <SENSITIVEDATA xmlns=\"http://tempuri.org/\"> " +
" </soap:Body> " +
" </soap:Envelope> ";
ht.setXmlVersionTag(xml);
ht.call(accionSoap, envelope);
cad = ht.responseDump;
return cad;
}
catch(Exception e)
{
throw new Exception(e.toString());
}
}
Исключение возникает в httpTransportSE.call (soapAction, envelope), потому что, как я говорю, я не передаю имя пользователя и пароль
org.xmlpull.v1.XmlPullParserException: expected: START_TAG {http://schemas.xmlsoap.org/envelope/}Envelope (position:START_TAG <html>@1:6 in java.io.InputStreamReader@44f13428)
В ht.responseDump я получаю в html код:
401 - Unauthorized: Access is denied due to invalid credentials.
You do not have permission to view this directory or page using the credentials that you supplied