sudzc 101 (ответ на вопрос)
Я уверен, что это будет очень просто для вас, эксперты. SUDZC настроен, и все, кажется, работает должным образом, но когда значение возвращается делегату, оно является нулевым. NSLog показывает правильный ответ XML, так что я знаю, что он работает правильно, но значение в коде показывает ноль. SUDZC поставляется с примером программы, и вот как он работает. я создал тестовую функцию в веб-сервисе "WhatsYourFavoriteMovie", которая возвращает "Криминальное чтиво". Регистрация ясно показывает, что это значение возвращается. Почему окончательное значение (ноль)?? Пожалуйста, помогите, спасибо.
так что я звоню...
[service WhatsYourFavoriteMovie:self action:@selector(WhatsYourFavoriteMovieHandler:) userid: 1];
и затем, когда веб-сервис отвечает, он переходит к...
// 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 ниже, он возвращает "Pulp Fiction" в теге. Куда я иду не так?
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". Помогите мне, пожалуйста!! благодарю вас.
3 ответа
У меня была точно такая же проблема с ARC-версией сгенерированного кода Sudzc, но по какой-то причине не-ARC-версия работала нормально
ОБНОВИТЬ
Проверьте этот отчет о проблеме. Я внес изменения, предложенные в первом комментарии, и версия ARC работала нормально.
Если вы используете версию ARC, в SoapRequest измените строку
CXMLNode* element = [[Soap getNode: [doc rootElement] withName:@"Body"] childAtIndex:0];
с
CXMLNode* element = [[Soap getNode: [doc rootElement] withName:@"soap:Body"] childAtIndex:0];
Старайтесь NSLog ответ в didrecivedata. в классе SoapRequest.m
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)value {
NSString *str=[[NSString alloc]initWithData:value encoding:NSUTF8StringEncoding];
NSLog(@"data receives %@",str);
}
Тогда вы узнаете, в чем именно заключается проблема. После этого оставьте ответ, мы поможем вам в этом.