0

「ログイン」を使用してxml「文字列」を返すWebサービス呼び出しを介してデータベースを検索するアプリを作成しています。

この呼び出しの wdsl は次のとおりです。

<s:element name="PerformGlobalSearch">
  <s:complexType>
   <s:sequence>
    <s:element minOccurs="0" maxOccurs="1" name="searchString" type="s:string"/>
    <s:element minOccurs="0" maxOccurs="1" name="username" type="s:string"/>
    <s:element minOccurs="0" maxOccurs="1" name="password" type="s:string"/>
    <s:element minOccurs="1" maxOccurs="1" name="errorCode" type="s:int"/>
    <s:element minOccurs="0" maxOccurs="1" name="errorDescription" type="s:string"/>
   </s:sequence>
  </s:complexType>
</s:element>

<s:element name="PerformGlobalSearchResponse">
  <s:complexType>
    <s:sequence>
     <s:element minOccurs="0" maxOccurs="1" name="PerformGlobalSearchResult">
       <s:complexType mixed="true">
         <s:sequence>
           <s:any/>
         </s:sequence>
       </s:complexType>
     </s:element>
     <s:element minOccurs="1" maxOccurs="1" name="errorCode" type="s:int"/>
     <s:element minOccurs="0" maxOccurs="1" name="errorDescription" type="s:string"/>
   </s:sequence>
 </s:complexType>

wsdl2objc を使用してコードを生成しましたが、正常に動作しているようです。返された xml にアクセスする方法を知る必要があるだけです。

NSLog「webserviceSvc.m」クラスのresponsdataの場合、xmlを出力します。ただし、その後、wsdl2objc "PerformeGlobalSearchResponse" によって生成されたオブジェクトを返します。これをコードで受け取ることができましたが、含まれているはずの xml にアクセスできないようです。

-(void) processResponse : (WebServiceSoapBindingResponse *)soapResponse {
NSArray *responseBodyParts = soapResponse.bodyParts;

id bodyPart;
@try{
   bodyPart = [responseBodyParts objectAtIndex:0];
}
...

else if([bodyPart isKindOfClass:[xxxWebServiceSvc_PerformeGlobalSearchResponse class]])    {
xxxWebServiceSvc_PerformGlobalSearchResponse* SearchResponse = bodyPart;

NSLog(@"Test: %@", SearchResponse.PerformeGlobalSearchResult);
}

私は多くの異なる方法を試しました。私はxmlにアクセスする必要があり、それを解析する必要があります。解析 さまざまな解決策を試しながら、うまくいったと思います。

しかし、どうすればxmlにアクセスできますか? PerformGlobalSearchResult を xml ドキュメントに変換するにはどうすればよいですか?

4

1 に答える 1

0

したがって、私の問題の解決策は、生成された SOAP コードを変更して、必要なものが返されるようにすることでした。

WSDL と wsdl2objc によって wearg 変数型を返すように設定されていることが判明しました。私はそれを変更し、辞書を戻り値として使用することになりました。これは、使用されなかった定義済みの型だったからです。それから私は難なくそれを賛美することができました。

于 2013-11-25T09:44:08.673 に答える