1

これはあなたの専門家にとって非常に簡単になると確信しています。SUDZCが設定され、すべてが正常に機能しているように見えますが、値がデリゲートに返されると、nullになります。NSLogは正しいXML応答を示しているので、正しく機能していることはわかっていますが、コードの値はnullを示しています。SUDZCにはサンプルプログラムが付属しており、これが実行方法です。「PulpFiction」を返すWebサービス「WhatsYourFavoriteMovie」でテスト関数を作成しました。ログには、この値が返されることが明確に示されています。最終値(null)はなぜですか?助けてください、ありがとう。

だから私は電話します...

[service WhatsYourFavoriteMovie:self action:@selector(WhatsYourFavoriteMovieHandler:) userid: 1];

そして、Webサービスが応答すると、次のようになります...

// Handle the response from WhatsYourFavoriteMovie.
- (void) WhatsYourFavoriteMovieHandler: (id) value {

// Handle errors
if([value isKindOfClass:[NSError class]]) {
NSLog(@"%@", value);
return;
}

// Handle faults
if([value isKindOfClass:[SoapFault class]]) {
NSLog(@"%@", value);
return;
}


// Do something with the NSString* result
NSString* result = (NSString*)value;
NSLog(@"WhatsYourFavoriteMovie returned the value: %@", result);
}

ただし、「value」と「result」は常に「null」です...以下のNSLog出力でわかるように、タグに「PulpFiction」が返されます。どこが間違っているのですか?

2012-02-17 17:27:41.487 SudzCExamples[2782:f803] Loading:     https://www.mydomain.com/tk_services/tk.asmx

2012-02-17 17:27:41.491 SudzCExamples[2782:f803] <?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"     
xmlns="com.mynamespace"><soap:Body><WhatsYourFavoriteMovie>
<userid>1</userid></WhatsYourFavoriteMovie></soap:Body></soap:Envelope>

2012-02-17 17:27:41.497 SudzCExamples[2782:f803]
Applications are expected to have a root view controller at the end of application launch

2012-02-17 17:27:45.947 SudzCExamples[2782:f803]
<?xml version="1.0" encoding="utf-8"?><soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body>
<WhatsYourFavoriteMovieResponse xmlns="com.mynamespace">
<WhatsYourFavoriteMovieResult>Pulp Fiction</WhatsYourFavoriteMovieResult>
</WhatsYourFavoriteMovieResponse></soap:Body></soap:Envelope>

2012-02-17 17:27:45.949 SudzCExamples[2782:f803] WhatsYourFavoriteMovie returned the value: (null)"

繰り返しになりますが、ログでわかるように、サーバーから「パルプフィクション」という値を取得しましたが、ログの最後の行には「null」という値が返されたと記載されています。私を助けてください!!ありがとうございました。

4

3 に答える 3

3

ARCバージョンのSudzcで生成されたコードでもまったく同じ問題が発生しましたが、何らかの理由で非ARCバージョンは正常に機能しました。

アップデート

この問題レポートを確認してください。最初のコメントで提案された変更を加えましたが、ARCバージョンは正常に機能しました。

于 2012-03-27T21:32:11.240 に答える
0

didrecivedataで応答をNSLogしてみてください。クラスSoapRequest.m

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)value {

    NSString *str=[[NSString alloc]initWithData:value encoding:NSUTF8StringEncoding];

    NSLog(@"data receives %@",str);

}

次に、正確な問題が何であるかを知るようになります。これを行った後、応答を投稿してください、私たちはそれに応じてあなたを助けます。

于 2012-02-23T12:30:37.617 に答える
0

ARCバージョンを使用している場合は、SoapRequestで行を変更します

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

CXMLNode* element = [[Soap getNode: [doc rootElement] withName:@"soap:Body"] childAtIndex:0];
于 2012-02-24T09:32:01.167 に答える