0

Android アプリを作成しており、オンラインの WSDL ベースのデータベースにアクセスする必要があります。私のコードはそのデータベースから国のリストにアクセスしますが、データを取得する形式がわかりません。単一の文字列、配列?など..では、WSDL の標準的な戻り値の型はありますか? ありがとう。

編集:コードスニペット

        //this is the actual part that will call the webservice
        androidHttpTransport.call(SOAP_ACTION, envelope);

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

    if(result!=null)
    {
        //put the value in an array
        // prepare the list of all records
         List<HashMap<String, String>> fillMaps = new ArrayList<HashMap<String, String>>();
        for(int i = 0; i < 10; i++){
            HashMap<String, String> map = new HashMap<String, String>();
            map.put(result.getProperty(i).toString());
            fillMaps.add(map);
            lv.setOnItemClickListener(onListClick);
        }
     // fill in the grid_item layout
        SimpleAdapter adapter = new SimpleAdapter(this, fillMaps, R.layout.grid_item, from, to);
        lv.setAdapter(adapter);
    }
        else
        {
              Toast.makeText(getApplicationContext(), "No Response",Toast.LENGTH_LONG).show();
        }
  } catch (Exception e) {
        e.printStackTrace();
  }
4

1 に答える 1

1

WSDL 自体はデータ形式ではありません。これは、Web サービス コントラクトの XML ベースの記述です。入力パラメーターと結果の出力は、WSDL を使用して定義されます。こちらをご覧ください

データは、XML スキーマ定義 (XSD) を使用して定義されます。こちらをご覧ください

私は Android に詳しくありませんが、WSDL 定義を読み取り、クライアント プロキシを表す Java クラスを作成するためのライブラリ サポートまたはサード パーティ ツールが必要です。

(更新) 応答は「Countries」のタイプを返します

<message name="getCountryListResponse">
 <part name="return" type="tns:Countries"/>
</message>

「Countries」タイプを見ると、「Country」タイプの配列です。

<xsd:complexType name="Countries">
<xsd:complexContent> 
<xsd:restriction base="SOAP-ENC:Array">
<xsd:attribute wsdl:arrayType="tns:Country[]" ref="SOAP-ENC:arrayType"/>
 </xsd:restriction> 
</xsd:complexContent> 

「国」タイプには、以下の 3 つの要素があります。

</xsd:complexType> -
<xsd:complexType name="Country">
<xsd:all> 
<xsd:element name="coid" type="xsd:int"/>
<xsd:element name="countryName" type="xsd:string"/> 
<xsd:element name="countryCode" type="xsd:string"/>
</xsd:all>
</xsd:complexType>

そのため、Android コードがクライアント プロキシを作成しない場合は、上記のようにデータの XML を解析する必要があります。

おそらく何かのように見えます(簡略化):

<Countries>
  <Country>
    <coid>123</coid>
    <countryName>France</countryName>
    <countryCode>111</countryCode>
</Countries>
于 2013-02-02T19:55:02.810 に答える