10

Sudzcを使用してWebサービスを機能させようとしています。自動参照カウントなしで WSDL を obj-c に変換すると、問題なく動作します。問題は、現在すべてのアプリケーションを iOS 5 で構築しており、すべてのコードで ARC を使用していることです。Sudzc では、ARC を有効にしてバンドルを作成できるようになりましたが、このコードを実行すると常に null が返されます。

Sudzc コードのデバッグを試みたところ、サービスから正しい xml 応答が返されました。翻訳のどこかで何かが失われています。ARCなしで動作するSudzcコードをARCを有効にしたコードに変換しようとしましたが、すべてのエラーを修正するとすぐにnullが再び返されます。

誰かがこれに遭遇し、何がうまくいかないのか知っていますか? Sudzc コード全体を自分でデバッグする必要がないため、時間を大幅に節約できます。

4

4 に答える 4

16

私の場合(SUDZCとARC for IOS)では、SoapRequest.mファイルの次のコードを置き換えました。

CXMLNode* element = [[Soap getNode: [doc rootElement] withName:@"Body"] childAtIndex:0];

CXMLNode* element = [[Soap getNode: [doc rootElement] withName:@"soap:Body"] childAtIndex:0];

どういうわけか、それぞれの関数は「Body」という名前のルート要素を検索しています。石鹸のエンベロープを調べた後、ルート要素の名前が「soap:Body」であることが簡単にわかります。

于 2012-01-02T10:13:31.190 に答える
1

私の webService は、Axis Eclipse を使用して Java で作成されました。

私が使用するARCの場合:"soapenv:Body"

そして、ファイル SoapObject.m に追加します

#import "Soap.h"
#import "SoapObject.h"
于 2012-05-23T10:27:08.780 に答える
0

私の場合、「env:Body」は機能しました。リターンxmlを(印刷して)確認し、適切に置き換えます

于 2012-04-29T21:04:12.633 に答える
0

私の場合、それは .Net Web サービス (WCF) であり、s:Body: を使用する必要がありました: CXML ドキュメントを印刷して発見しました:

CXMLNode* test = [doc rootElement];
NSLog(@"%@",test);

ここで私はこれを得ました:

<CXMLElement 0x68c1a50 [0x68c1b10] s:Envelope <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><**s:Body**><GetUserIDResponse xmlns="http://tempuri.org/"><GetUserIDResult>8</GetUserIDResult></GetUserIDResponse></s:Body></s:Envelope>>

以前の投稿のおかげで、私はそれを見つけることができ、ブログに完全な回答を再度投稿することができました。 -(WCF-web-service-and-IOS-client).aspx

于 2012-08-07T12:23:48.860 に答える