2013-08-30 85 views
0

我正在使用SUDZ翻譯爲Objective-C的WDSL,其中一種方法返回一個帶參數的XML以調用服務。問題是,由於SudzC的翻譯,它沒有按預期工作,我正在尋找某種解決方案(我一直在寫電子郵件近2個月,SudzC不回答)不完整的SOAP響應

我的想法是:我如何獲得COMPLETE soap答案以後解析它?這可能夠了。

因爲問題在於它只取第一個參數。如果我調用該方法,這是處理程序的答案:

handler

但隨後在回答(「值」)有沒有像「NextParameter」。事實上,如果我使用'objectAtIndex','allKeys'..它給我一個例外。

enter image description here

這是方法:

Method

的WSDL的工作,我已經在Java原來的嘗試,在這裏它是答案的一個小片段:

http://i.imgur.com/dCcOrYg.png

+0

我不能幫你的更廣泛的問題(我不熟悉你的特定'SoapRequest'類,也不是如何解析參數,發送請求等),但你的'deserializeTo'參數是'[ParameterData alloc]',但它應該是'[[ParameterData alloc] init]'。你的評論說它返回一個'ParameterData',但你顯然返回'SoapRequest'。 – Rob

回答

1

我用Sudzc + XMLDictionary(https://github.com/nicklockwood/XMLDictionary )類,將SOAP xml轉換爲字典。

創建一個新的請求,並設定這樣的委託:

[[super soapService] products:self 
         parameter1:@"1"]; 

#pragma mark - SoapDelegate 

- (void)onload:(id)value { 
    NSDictionary *soapDictionary = [NSDictionary dictionaryWithXMLString:value]; 

    NSDictionary *bodyDictionary = [soapDictionary objectForKey:@"soapenv:Body"]; 


// here you can parse the SOAP response 
    NSDictionary *productsDictionary = [[bodyDictionary objectForKey:@"ns1:prductsresponse"] objectForKey:@"products"]; 

} 
+0

起初謝謝你的回答,但是我不清楚。我真的很喜歡這個,所以如果你可以更具說明性...我必須調用方法'getParameters',然後將'value'參數發送到'onload'方法?第一行:[[超肥皂服務] ..??再次感謝。 – Sergiodiaz53

+1

我明白了。你可以忽略[super soapService]這只是我從我的項目中複製的東西。您需要從Sudzc提供的服務中創建一個新變量,例如Service * service = [Service alloc] init];比你可以調用你需要的soap方法,並將soap委託設置爲self [service getParameters]。比你需要實現SoapDelegate。 SoapDelegate onload:方法的值變量將成爲請求的SOAP響應,我使用XMLDictionary類來使解析過程變得更容易。我希望這對你有所幫助。 –

+0

我試圖做到反正,但仍然無法正常工作。我的問題是我沒有SOAP響應,實際上我有'ParameterData'。我不知道爲什麼。我怎樣才能得到RAW SOAP響應?非常感謝。 http://i.imgur.com/I5gbvR4.png http://i.imgur.com/zzbZ4yl.png – Sergiodiaz53