0

kSOAP2 を使用して、Web サービスから Android アプリケーションに文字列配列を送信しようとしています。kSOAP2 を使用すると、Android 側で Object 形式の応答を受け取ります。このオブジェクトを文字列配列形式に変換して、この配列を GridView に直接渡すことができるようにします。

私のWebサービスメソッドは次のとおりです。

[WebMethod]
public string[] getit(string status)
{
   string[] result;
   if (status == "blue")
      result = new string[] { "One", "Two", "Three", "Four" };
   else
      result = new string[] { "five", "six", "Seven", "Eight" };
   return result;
}

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

public void call(String status)
{
   try {    
       SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

       request.addProperty("status",status.toString());

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

       HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
       androidHttpTransport.call(SOAP_ACTION, envelope);

       Object result = (Object)envelope.getResponse();

       array1=(String []) result;   //This statement does not work
   } 
}

Android コードでは、array1 はグローバルに宣言された文字列配列です。文字列配列1[]; オブジェクトの結果をarray1文字列配列に変換したい。前もって感謝します。

4

2 に答える 2

1

今は良い例が思いつきません。返されたオブジェクトを調べる必要があります。しかし、内部にプロパティを持つ SoapObject だと思います

SoapObject result = (SoapObject)envelope.getResponse();

それから私はあなたが電話すると思います

String s = (String)result.getProperty(0);

返された配列の最初の要素を取得します。

もちろん、必要なエラー処理を行う必要があります。

于 2012-07-24T12:30:36.910 に答える
0

最初にresult.toString()....を使用して「result」オブジェクトを出力し、それが何を返すかを確認します。その後、string[]に直接変換されません。最初にObject[]配列に変換する必要があります...そして1つ1つでstring[]配列に変換されます...したがって、コードは次のようになります...。

Object [] objArr =(Object [])result;

String [] strArr = new String [objArr.length];

for(int i = 0; i <= objArr.length; i ++)

{{

  strArr[i]=objArr[i].toString();

}

それはあなたがそれをすることができる方法です....

于 2012-07-24T10:30:41.220 に答える