0

利用可能な ksoap ライブラリを使用して、Android アプリケーションから SOAP Web サービスに配列を渡したいと考えています。

私の配列は次のようになります。

String[] values={"abc","def"};

これをパラメーターとして Web サービス呼び出しに渡す方法は?

誰でも私を助けてもらえますか?

これは私のWebサービスコードです:

  public class Service1 : System.Web.Services.WebService
   {
    [WebMethod]

    public String getnames(String[] values)
    {

        try
        {

            using (SqlConnection myConnection = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=student;User ID=sa;Password=123"))
            {
                int count = 1;
                int rows = 0;

                myConnection.Open();
                foreach (string student in values)
                {
                    count++;
                    using (SqlCommand myCommand = new SqlCommand())
                    {
                        myCommand.Connection = myConnection;
                        myCommand.CommandText = "insert into record values(@pCount, @pStudent)";
                        SqlParameter param = myCommand.CreateParameter();
                        param.ParameterName = "@pCount";
                        param.Value = count;
                        myCommand.Parameters.Add(param);

                        param = myCommand.CreateParameter();
                        param.ParameterName = "@pSudent";
                        param.Value = student;

                        rows = myCommand.ExecuteNonQuery();
                    }
                }
            }
        }

        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
            return "an error occured";
        }


        return "success";
       }
     }
  }

私のlogcat:

   11-10 12:26:56.159: INFO/System.out(334):  ----null
   11-10 12:26:56.159: DEBUG/AndroidRuntime(334): Shutting down VM
   11-10 12:26:56.159: WARN/dalvikvm(334): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
   11-10 12:26:56.179: ERROR/AndroidRuntime(334): FATAL EXCEPTION: main
   11-10 12:26:56.179: ERROR/AndroidRuntime(334): java.lang.NullPointerException
   11-10 12:26:56.179: ERROR/AndroidRuntime(334):     at com.example.display.call2(display.java:193)
   11-10 12:26:56.179: ERROR/AndroidRuntime(334):     at com.example.display$3.onClick(display.java:146)
   11-10 12:26:56.179: ERROR/AndroidRuntime(334):     at android.view.View.performClick(View.java:2408)
   11-10 12:26:56.179: ERROR/AndroidRuntime(334):     at android.view.View$PerformClick.run(View.java:8816)
   11-10 12:26:56.179: ERROR/AndroidRuntime(334):     at android.os.Handler.handleCallback(Handler.java:587)
   11-10 12:26:56.179: ERROR/AndroidRuntime(334):     at android.os.Handler.dispatchMessage(Handler.java:92)
   11-10 12:26:56.179: ERROR/AndroidRuntime(334):     at android.os.Looper.loop(Looper.java:123)
   11-10 12:26:56.179: ERROR/AndroidRuntime(334):     at android.app.ActivityThread.main(ActivityThread.java:4627)
   11-10 12:26:56.179: ERROR/AndroidRuntime(334):     at java.lang.reflect.Method.invokeNative(Native Method)
   11-10 12:26:56.179: ERROR/AndroidRuntime(334):     at java.lang.reflect.Method.invoke(Method.java:521)
   11-10 12:26:56.179: ERROR/AndroidRuntime(334):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
   11-10 12:26:56.179: ERROR/AndroidRuntime(334):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
   11-10 12:26:56.179: ERROR/AndroidRuntime(334):     at dalvik.system.NativeStart.main(Native Method)
   11-10 12:26:56.189: WARN/ActivityManager(58):   Force finishing activity com.example/.display

前もって感謝します

4

2 に答える 2

2

これは、SOAP Web サービスを読み取るためのサンプル コードです。これが役に立てば幸いです。

private static String SOAP_ACTION = "http://tempuri.org/HelloWorld";

private static String NAMESPACE = "http://tempuri.org/";
private static String METHOD_NAME = "HelloWorld";

private static String URL = "http://bimbim.in/Sample/TestService.asmx?WSDL";

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

    //Initialize soap request + add parameters
    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);        

    //Use this to add parameters
    request.addProperty("Parameter","Value");

    //Declare the version of the SOAP request
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.setOutputSoapObject(request);

    //Needed to make the internet call
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
    try {
        //this is the actual part that will call the webservice
        androidHttpTransport.call(SOAP_ACTION, envelope);
    } catch (Exception e) {
        e.printStackTrace();
    }

    // Get the SoapResult from the envelope body.
    SoapObject result = (SoapObject)envelope.bodyIn;

    if(result != null){
        TextView t = (TextView)this.findViewById(R.id.resultbox);

        //Get the first property and change the label text
        t.setText("SOAP response:\n\n" + result.getProperty(0).toString());
    }

}

こちらもご覧ください

Android リスト IV: SOAP Web サービスへのアクセスと使用 I

The Droid Chronicles – Web サービス: kSOAP2 を使用して複雑なオブジェクトを渡す

編集:

これは Android ライブラリ用の KSOAP2 の既知の問題であり、現時点では単純に配列をサポートしていません。問題の説明は次のとおりです。

http://code.google.com/p/ksoap2-android/issues/detail?id=19

サードパーティのパッチ、ソリューション、および例は、次の場所にあります。

http://people.unica.it/bart/ksoap2-patch/

これらのリンクを見てください。その上で答えを見つけることができます。

ありがとう。

于 2011-11-10T06:25:34.327 に答える
0

JSON または XML にシリアル化し、その JSON または XML をサーバーに送信し、サーバー上でその JSON または XML をデコードします。あなたの場合に使用する正確な方法についてはわかりません。

于 2011-11-10T06:15:57.670 に答える