0

ksoap2 を使用して Android から webmethod を呼び出そうとしています。soapobject メソッド addProperty を使用して webmethod のパラメーターを設定しましたが、webmethod でパラメーターを設定できません。1 つの AsyncTask クラスとその doInBackgroud() メソッド オーバーライドを作成し、そこから webmethod を呼び出します。

 cannot set webmethod parameters

コードは次のとおりです。

package com.example.locumapllication;

import android.os.AsyncTask;

public class MyAsyncTask extends AsyncTask<String, Void, Object> {

private String METHOD_NAME="";
private String NAMESPACE="http://ws.easyway3e.com/";
private String SOAP_ACTION="";
private static final String URL="http://192.168.2.155:8080/WebService/DBConn?wsdl";

@Override
protected Object doInBackground(String... params) {

    System.out.println("Call-1"+params[0]+params[1]+params[2]+params[3]);
    METHOD_NAME="openConnection";               
    SoapObject request=new SoapObject(NAMESPACE, METHOD_NAME);



    request.addProperty("arg0",params[0]);
    request.addProperty("arg1",params[1]);
    request.addProperty("arg2",params[2]);
    request.addProperty("arg3",params[3]);
    System.out.println("Property Set ="+request.getPropertyCount());

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

    envelope.dotNet=true;
    envelope.setOutputSoapObject(request);


    System.out.println(envelope.bodyOut.toString());

    HttpTransportSE androidHttpTranportSE=new HttpTransportSE(URL);


        try {
            SOAP_ACTION= METHOD_NAME + NAMESPACE;

            androidHttpTranportSE.call(SOAP_ACTION, envelope);

            SoapPrimitive  resultsRequestSOAP = (SoapPrimitive) envelope.getResponse();

                System.out.println(" Connection is =>"+resultsRequestSOAP.toString());

        } catch (IOException e) {

            e.printStackTrace();
        } catch (XmlPullParserException e) {

            e.printStackTrace();
        }
        Object result = null;
        try {
            result = envelope.getResponse();
        } catch (SoapFault e) {

            e.printStackTrace();
        }

    return result;
}

}

soapobject の setproperty メソッドを実行して webmethod のプロパティを設定することはできますが、webmethod のパラメーターを設定することはできません。

jaxws を使用して Web サービスを作成したので、ksoap2 および jaxws との統合に問題があるかどうかを知りたいです。また、これを解決するために私を案内してください。

4

2 に答える 2

0

ここでproprtyがどのように設定されているか見てください。これが役立つことを願っています

    SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME);
  //parameters added here..  
  PropertyInfo pi = new PropertyInfo();
    pi.setName("EmailAddress");
    pi.setValue("dilip.mariya@gmail.com");
    pi.setType(String.class);
    Request.addProperty(pi);

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

    AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport(URL);
    Log.e("above try","");
    try
    {
        androidHttpTransport.call(SOAP_ACTION, envelope);
        SoapObject response = (SoapObject)envelope.bodyIn;

        String result =  (response.getProperty(0).toString());
       // String gfdgf =  (response.getProperty(1).toString());
        Log.e("", result);
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
于 2012-08-22T06:51:02.077 に答える
0

URL を変更してみてください (仮想デバイスを使用している場合):

URL="http://10.0.2.2:8080/WebService/DBConn?wsdl"

于 2012-08-22T08:01:22.567 に答える