2

目的cから.NetWCFサービスを呼び出しています。タイプ「Category」のオブジェクトを関数に渡す必要があります。オブジェクトを渡す前に、その「id」を初期化する必要があります。コードは次のとおりです。

SDZiPadDocSyncService *service = [[SDZiPadDocSyncService alloc]init];
service.logging = YES;
SDZCategory *cat = [[SDZCategory alloc]init];
cat.categoryId = [catId intValue];
[service getDocsByCatId:self action:@selector(getDocsByCatIdHandler:) category:cat];        

呼び出しがSQLServerにヒットすると、categoryIdは0になります。Id= 0のカテゴリがないため、サービスは0レコードを返します。誰かがこれを手伝ってくれませんか?

4

2 に答える 2

0

名前空間の問題の回避策をようやく見つけました。サービスNamespace="http://tempuri.org"の属性に属性を配置する必要がありました。DataContractこの回避策の詳細な説明は、ここにあります。

于 2012-08-20T01:47:40.447 に答える
0

要求がWCFサービスによって正しく逆シリアル化されていない可能性があります。sudzcがWCFサービスが期待するSOAPXMLを生成していることを確認するには、VisualStudioに付属のWcfTestClient.exeアプリをgetDocsByCatId使用してそのメソッドを呼び出します。要求/応答パネルに、XMLタブが表示されます。sudzcXMLをそのタブのXMLと比較します。

WCFは、XML名前空間がsoap本体で明示的に使用されることを期待する場合があります。たとえば、soapは、categoryId要素がデフォルトの名前空間であるため、xmlns="http://tempuri.org/" XML名前空間にあることを示しています。WcfTestClientからのsoapXMLもXML名前空間に配置categoryIdされていることを確認してくださいhttp://tempuri.org/。それが行われない場合、sudzcをどのように構成するかわかりません。

于 2012-08-15T14:14:18.027 に答える