2013-09-26 2 views
1

Я уже испытывал эту ошибку в течение 2 недель при доступе к WCF (.svc) Web Service. Но в C#, когда я добавил веб-службу в качестве ссылки на службу, он работает.org.xmlpull.v1.XmlPullParserException: неожиданный тип (позиция: END_DOCUMENT null @ 1: 1 в Android KSOAP2, но в C# он работает

org.xmlpull.v1.XmlPullParserException: unexpected type (position:END_DOCUMENT [email protected]:1 in  [email protected]) 

веб-службы targetNamespace=""urn:data.link.abc" и детали метода является

<wsdl:operation name="EncryptPassword"> 
<wsdl:input wsaw:Action="EncryptPassword" name="EncryptPasswordRequest" message="tns:EncryptPasswordRequest"/> 
<wsdl:output wsaw:Action="urn:data.link.abc/ABCContract/EncryptPasswordResponse"  name="EncryptPasswordReply" message="tns:EncryptPasswordReply"/> 
</wsdl:operation> 

Это мой код для доступа к. Веб-сервис svc.

public final String web_serviceEncryptPassword(String password) 
{ 
    String NAMESPACE = "urn:data.link.abc"; 
    String METHOD_NAME = "EncryptPassword"; 
    String SOAP_ACTION = NAMESPACE + "/" + "EncryptPassword"; 
    String URL = "http://192.168.20.254:8081/Service.svc"; //"http://192.168.20.254:8081/Service.svc?wsdl"; 

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
    envelope.dotNet = true; 
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 
    Object result = null; 
    try 
    { 
     SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 
     //request.addProperty("_Password", password); 
     PropertyInfo propertyInfo = new PropertyInfo(); 
     propertyInfo.setName("arg0"); 
     propertyInfo.setValue(password); 
     propertyInfo.setType(String.class); 
     request.addProperty(propertyInfo); 


     envelope.setOutputSoapObject(request); 
     envelope.bodyOut = request; 

     //They said they have an authorization, but same error still showed up when I added the header for the     
     //Authorization... 
     //List<HeaderProperty> headers = new ArrayList<HeaderProperty>(); 
     //String authentication = android.util.Base64.encodeToString(
     //   "user.a:password".getBytes(), android.util.Base64.NO_WRAP); 
     //headers.add(new HeaderProperty("Authorization", "Basic " + authentication)); 
     //// headers.add(new HeaderProperty("Authorization", "user.a:password")); 

     androidHttpTransport.debug = true; 
     androidHttpTransport.call(SOAP_ACTION, envelope);//, headers); 
     SoapObject response = (SoapObject) envelope.getResponse(); 
     result = Boolean.parseBoolean(response.getProperty(0).toString()); 

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

    return result.toString(); 
} 

Я использую ksoap2-android-assembly-2.5.7-jar-with-dependencies.jar как свою библиотеку KSOAP2.

ответ

0

У меня была та же проблема изменилась ниже линии, как (ver1.2) и проблема была решена

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
0

это скорее всего означает, что сервер отвечает сообщением об ошибке HTTP. ksoap не может анализировать ошибки HTTP. мы добавили эту возможность вручную в библиотеку.

 Смежные вопросы

  • Нет связанных вопросов^_^