ksoap2 Android использует веб-сервис .NET WCF XMLPullParserError, пожалуйста, помогите - PullRequest
0 голосов
/ 09 сентября 2011

За последние 2 дня я потратил около 10 часов, пытаясь выяснить это, и до сих пор не могу заставить его работать. я сделал службу WCF в VS2010, и у меня она размещена в IIS. Я пытаюсь вызвать службу в Java в проекте Android, но получаю эту ошибку

org.xmlpull.v1.XmlPullParserException: unexpected type (position:END_DOCUMENT null@1:0 in java.io.InputStreamReader@4052b038) 

вот мой код:

    package asdd.sd;

    import org.ksoap2.SoapEnvelope;
    import org.ksoap2.serialization.PropertyInfo;
    import org.ksoap2.serialization.SoapObject;
    import org.ksoap2.serialization.SoapPrimitive;
    import org.ksoap2.serialization.SoapSerializationEnvelope;
    import org.ksoap2.transport.HttpTransportSE;

    import android.app.Activity;
    import android.os.Bundle;

public class AsdasdActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


    String nameSpace = "http://findmydroid.com/";
    String methodName = "GetData";
    String soapAction = "http://findmydroid.com/GetData";
    String url = "http://10.0.2.2/FindMyDroid/Service1.svc";

    SoapObject soapObject = new SoapObject(nameSpace, methodName);

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER12);
    envelope.dotNet = true;
    envelope.setOutputSoapObject(soapObject);
    HttpTransportSE transport = new HttpTransportSE(url);

   PropertyInfo pi = new PropertyInfo();
    pi.setName("value");
    pi.setValue(55);
    soapObject.addProperty(pi); 


    try
    {
        transport.call(soapAction, envelope);
        String dump = transport.requestDump;
        SoapPrimitive response = (SoapPrimitive)envelope.getResponse();
        boolean result = Boolean.parseBoolean(response.toString());
    }
    catch(Exception ex)
    {
        ex.printStackTrace();
    }
}
}

и вот код для моего веб-сервиса:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Runtime.Serialization;
    using System.ServiceModel;
    using System.ServiceModel.Web;
    using System.Text;

namespace FindMyDroid.WCF
{

[ServiceContract(Namespace = "http://findmydroid.com/")]
public interface IService1
{

    [OperationContract]
    string GetData(int value);

    // TODO: Add your service operations here
}

}

 Here is the Service1 Class

namespace FindMyDroid.WCF
{

public class Service1 : IService1
{
    public string GetData(int value)
    {
        return string.Format("You entered: {0}", value);
    }


}
}  

Все, что я хочу сделать, это просто протестировать службу, чтобы я знал, что могу подключиться к ней с помощью Java, если кто-нибудь может помочь мне с этой ошибкой. Я пробовал так много разных примеров отсюда (Stackoverflow) и других сайтов. Я попытался разместить службу в ASP хосте Visual Studio и IIS. Я также попытался позвонить с помощью внешнего IP-адреса, но безрезультатно.

1 Ответ

0 голосов
/ 18 декабря 2012

Исходя из моего опыта, XMLParser пытается проанализировать полученный ответ;хотя в этом случае возможно, что ответ, который он получает, имеет формат HTML.

XMLParser фактически указывает, что он не распознает тип по адресу:

position:END_DOCUMENT null@1:0

В моем случаеОбычно ответом была ошибка 500 или ошибка 404 HTML-документа.После того, как я определил, что было в ответе об ошибке, я смог направить вызов на правильный URL-адрес и получил правильный ответ.

...