質問

私のSOAP Webサービスを使って私のAndroidアプリケーションをインタフェースしようとしています、そして私は予期しない結果を得る...

SOAPサービスは正常に機能しています、彼らはSOAPUIでテストされています、WSDLは有効です。 KSOAP2 LIBバージョン1.6.1

を使用しています。

これは私の呼び出しコードです:

    try {

        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
        request.addProperty("prop1", 1);
        request.addProperty("prop2", "FR");
        envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.setOutputSoapObject(request);
        androidHttpTransport = new HttpTransportSE(URL);
        androidHttpTransport.debug = true;
        androidHttpTransport.call(SOAP_ACTION, envelope);
        SoapObject objetSOAP = (SoapObject)envelope.getResponse();
        Log.e("TESTSOAP", objetSOAP.getProperty(0).toString());
    }
    catch (Exception e){
        Log.i("androidHttpTransport.requestDump", androidHttpTransport.requestDump);
        e.printStackTrace();
        Log.i("androidHttpTransport.responseDump", androidHttpTransport.responseDump);


    }
.

私は「Call」メソッドで例外を得ました、WICHは:

03-13 17:31:05.791: W/System.err(6020):     at 03-13 17:30:19.901: W/System.err(5976):            org.xmlpull.v1.XmlPullParserException: expected: START_TAG {http://schemas.xmlsoap.org/soap/envelope/}Envelope (position:START_TAG .... @2:402 in java.io.InputStreamReader@46294968) 
.

奇妙なことは、SOAPUIで送信された封筒を試してみるためにrequestdumpを使うならば、それは完全にうまく機能します。私は期待された結果を得ました。しかし、ResponsEdgeは実際にはWSDLファイルを返しています。WSDLが元気に呼ばれていたが、私が起動しようとしているメソッドではないかどうかだけです。

誰もがなぜですか?そしてそれを修正する方法は?

ありがとう!

役に立ちましたか?

解決

それをいまいましい、ついに解決策を見つけました(数ヶ月後に!) どうやら

   androidHttpTransport = new HttpTransportSE(URL);
.

は、WSDLを指定しないでくださいが、PHPファイルには

他のヒント

クラスSOAPDEMOはAsyncTaskを拡張します {

        private final ProgressDialog dialog = new ProgressDialog(MainActivity.this);
        private final String SOAP_ACTION = "YOUR_PATH";
        private final String METHOD_NAME = "METHOD_NAME";
        private final String NAMESPACE = "NAMESPACE (for ex.http://)";
        private final String URL = "URL";

    @Override
    protected void onPreExecute() 
    {
        this.dialog.setMessage("data Loading");
        this.dialog.show();
    }

    @Override
    protected Void doInBackground(Void... unused) 
    {

        SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME);
        Request.addProperty("KEY",  "VALUE");
        Request.addProperty("KEY",  "VALUE");

        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.dotNet = true;
        envelope.setOutputSoapObject(Request);
        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

    try 
    {
        androidHttpTransport.call(SOAP_ACTION, envelope);
        SoapObject response = (SoapObject) envelope.getResponse();

        System.out.println("response"+response);
        int  Count = response.getPropertyCount();
        list= new String[Count];    


        for (int i = 0; i < Count; i++)
        {
           list[i] = response.getPropertyAsString(i).toString();
        }

    }

    catch (Exception e) 
    {
    exc=true;
    e.printStackTrace();
    }
    return null;
    }

    @Override
    protected void onPostExecute(Void result)
    {

        if (this.dialog.isShowing()) 
        {
           this.dialog.dismiss();
        }
        if(exc)
        {
           Toast.makeText(MainActivity.this,"Error" , Toast.LENGTH_LONG).show();
        }
        else
        {
            spinner();
            exc=false;
        }
     }
    }

    public void spinner()
    {
        Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);
        ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, list);
        adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner1.setAdapter(adapter1);

        spinner1.setOnItemSelectedListener(new OnItemSelectedListener() 
        {
            @Override
            public void onNothingSelected(AdapterView<?> parent)
            {

            }

            @Override
            public void onItemSelected(AdapterView<?> parent,View view, int pos, long id) 
            {
            // your code
            }

      });
    }
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top