嘗試從ksoap getResponse()接收結構化數據時遇到問題;在Android中接收結構化數據KSOAP2
我已經仔細閱讀指導,以發送和接收使用SoapObjects從網站數據:link to site
我使用這個WSDL
我試圖獲取該對象具有結構類似:
<message name="doSearchResponse">
<part name="search-count" type="xsd:int"/>
<part name="search-count-featured" type="xsd:int"/>
<part name="search-array" type="typens:ArrayOfSearchResponse"/>
<part name="search-excluded-words" type="typens:ArrayOfExcludedWords"/>
<part name="search-categories" type="typens:ArrayOfCategoriesStruct"/>
</message>
我覺得這是一種輸出對象是在doSearch方法應用於:
<operation name="doSearch">
<input message="typens:doSearchRequest"/>
<output message="typens:doSearchResponse"/>
</operation>
這是我試圖執行搜索操作,然後得到我上面介紹的對象(doSearchResponse)的對象代碼。
public void search(String searchPhrase) {
/* search criteria holder */
SoapObject searchOptType = new SoapObject(API_NAMESPACE, "SearchOptType");
searchOptType.addProperty("search-string", searchPhrase);
/* search method */
SoapObject doSearch = new SoapObject(API_NAMESPACE, "doSearch");
doSearch.addProperty("session-handle", sessionToken);
doSearch.addProperty("search-query", searchOptType);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(doSearch);
Object response = null;
try {
transport.call("", envelope);
response = envelope.getResponse();
System.out.println(response.getClass());
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
搜尋工作正常,但它返回我只有一個目標 - 一個單一的Integer對象(不是數組),這是找到匹配項的searchPhrase的計數。我認爲這是doSearchResponse對象中的第一個位置。但我需要其餘的,尤其是:搜索陣列。我究竟做錯了什麼?是不是這樣處理envelope.call(「和這個字符串在這裏」,...)?
我只是不能。來自getResponse()方法的對象是一個Integer類。所以它是definitelty不是一個數組。關於soap_action,我不太清楚,我應該使用哪一個。事實上,無論我放在那裏,輸出對象總是相同的:Integer對象 – Garet