2013-02-02 77 views
0

我正在製作一個android應用程序,並且需要訪問基於在線WSDL的數據庫。我的代碼從該數據庫訪問一個國家列表,但我不知道我將獲取數據的格式。單個字符串,數組?等等。那麼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(); 
    } 

回答

1

WSDL不是每本身的數據格式。它是一個基於XML的Web服務合同描述。輸入參數和結果輸出使用WSDL定義。請參見此處WSDL

使用XML模式定義(XSD)定義數據。請看這裏XSD

我對Android不熟悉,但應該有一些庫支持或第三方工具來讀取WSDL定義並創建代表客戶端代理的Java類。

(更新) 響應返回一個類型爲「國家」的

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

如果你看一下「國家」類型,它是一個數組「國家」類型的 :

<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> 

「國家」類型具有以下三個元素。

</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> 
+0

是的,採用的是Android庫支持。我已經完成了代碼中的所有內容,只需要知道名爲getCountryList()的函數的返回類型格式。我需要知道這一點,以便我可以適當地接受和處理數據。有什麼方法可以找出返回類型嗎? –

+0

它在WSDL中,不是?請發佈WSDL文件。 – OldProgrammer

+0

http://api.radioreference.com/soap2/index.php?wsdl 所需功能的名稱是getCountryList –