2011-09-09 7 views
0

過去2日間に約10時間を費やしていますが、これを理解しようとするとまだ動作しません。私はVS2010でWCFサービスを作って、IISでホストしています。イムは、AndroidプロジェクトにJavaでサービスを呼び出すしようとしているが、私はこのエラーここksoap2 androidが.NET WCF Webサービスを使用していますXMLPullParserError助けてください

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

を得続けることは私のコードです:

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(); 
    } 
} 
} 

、ここで私のWebサービス用のコードです:

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)や他のウェブサイトを試みました。私はVisual StudioのASPホストとIISでサービスをホストしてみました。私は外部IPアドレスでも、結果なしでそれを呼び出すことを試みました。

+0

サービス(バインディング)をどのようにホストしていますか? WSDLに従って正しいSOAPアクション名前空間などを使用しましたか? .NETクライアントから正常に呼び出すことはできますか? –

+0

.NETから呼び出すと正常に動作します。これはIISでホストされています。私は実際にこれから移動し、MVCアプリケーションに組み込まれているRESTサービスを使用することに決めましたが、もし私に役立つものがあれば教えてください。 –

答えて

0

私の経験から、XMLParserは受信した応答を解析しようとしています。この場合、受け取っている応答がHTML形式である可能性があります。私の場合、応答は通常だったとエラー500またはエラー404 HTMLドキュメント

position:END_DOCUMENT [email protected]:0 

のXMLParserは、実際にそれがでタイプを認識しないことを指定します。エラーレスポンスが何であるかを特定したら、正しいURLにコールを誘導して正しい応答を受け取ることができました。

関連する問題