2011-07-07 146 views
0

我有返回String類型的WCF方法。如何處理SOAPPRIMITIVE響應

這是我的輸出

{ 「表1」:[{ 「表名」: 「LoadDistributor」, 「描述」: 「分銷商」, 「MandatoryFlag」: 「1」,「狀態「:」,「優先級」: 「0」},{「TableName」: 「LoadPrice」,「Description」:「Price 」,「MandatoryFlag」:「1」,「Status」: 「 「優先級」:「0」},{「TableName」: 「LoadProduct」,「Description」:「Product 」,「MandatoryFlag」:「1」,「Status」: 「」,「Priority」:「0 「},{」TableName「: 「LoadTradeSchemeDetail」, 「描述」 : 「TradeSchemeDeta」, 「MandatoryFlag」: 「1」, 「狀態」: 「」, 「優先級」: 「0」},{ 「表名」: 「RD.AlternativeProductDetail 「,」Description「 :」AltProdutDetail「,」MandatoryFlag「: 」0「,」Status「:」「,」Priority「: 」0「},{」TableName「: 」RD.AlternativeProductHeader「描述「 :」AltProdutHeader「,」MandatoryFlag「: 」0「,」Status「:」「,」Priority「: 」0「},{」TableName「: 」RD.BatchPriceDetail「,」Description「 「BatchPrice」,「MandatoryFlag」: 「1」,「狀態」:「」,「優先級」: 「0」},{「TableName」: 「RD.Executive」,「Description」: 「Executive」,「MandatoryFlag」: 「1」,「Status」:「」,「Priority」: 「0 「},{」TableName「: 」RD.Route「,」Description「:」Route 「,」MandatoryFlag「:」1「,」Status「: 」「,」Priority「:」0「}, 「TableName」: 「RD.vwRetailer」,「Description」: 「Retailer」,「MandatoryFlag」: 「1」,「Status」:「」,「Priority」: 「0」},{「TableName」 : 「RD.vwRouteDetail」, 「描述」: 「RouteDetail」, 「MandatoryFlag」: 「1」, 「狀態」: 「」, 「優先級」: 「0」},{ 「表名」: 「 XA.vwProdu ctType「,」Description「: 」Brand Product C「,」MandatoryFlag「: 」1「,」Status「:」「,」Priority「: 」0「},{」TableName「: 」XA.vwTown 」, 「描述」: 「鎮 」, 「MandatoryFlag」: 「1」, 「狀態」: 「」, 「優先級」: 「0」}]}

這是我的SOAP處理方法

// ksoap2 calling wcf 
public SoapPrimitive soapPrimitive(String METHOD_NAME, String SOAP_ACTION, String NAMESPACE, String URL) throws IOException, XmlPullParserException { 
    SoapPrimitive responses = null; 
    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); //set up request 
    request.addProperty("strExec", "7067"); 
    request.addProperty("strBusinessUnit", "HEMA"); 
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); //put all required data into a soap envelope 
    envelope.dotNet = true; 
    envelope.setOutputSoapObject(request); 
    AndroidHttpTransport httpTransport = new AndroidHttpTransport(URL); 
    httpTransport.debug = true; 

    try{ 

     Log.w("Log_cat" ,"*********" + envelope.toString()); 
     httpTransport.call(SOAP_ACTION, envelope); 
     Log.w("log_tag", " ===========" +SOAP_ACTION); 

     // Object result = (Object)envelope.getResponse(); 
     // JSONArray jArray = new JSONArray(result.toString()); 
     // Log.w("log_tag", " ===*********==" +jArray); 

     responses = (SoapPrimitive)envelope.getResponse(); 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 

    // Object response= envelope.getResponse(); 
    return responses; 
} 

我的C#方法返回字符串與JSON(作爲一個字符串)。

如何僅在列表或數組中獲取表名稱。 請幫幫我。這裏有什麼不對?

回答

3

你瞭解SOAP和JSON的區別嗎? kSOAP用於處理期待SOAP請求並返回SOAP響應的服務。所以除非你有SOAP服務返回帶有JSON的單個字符串元素,否則你不需要(也不能使用)kSoap。如果您有返回JSON的REST服務,請使用簡單的DefaultHttpClientHttpPost作爲described for example here。如果您始終使用JSON,它也會回答您的previous question

+0

它非常有幫助的建議。在我的情況下,WCF服務返回帶有JSON的String元素。 – Piraba

+0

在我的情況下,我想使用SOAP,但是它返回帶有JSON的String元素。現在結果是如何得到值的正確方式?請幫助我。 – Piraba

+0

請指導我如何處理這樣的SOAP值:{「Table1」:[{「TableName」:「LoadDistributor」,「Description」:「Distributor」,「MandatoryFlag」:「1」,「Status」:「」, 「Priority」:「0」}]} – Piraba