我在我的 iPhone 项目中使用从 sudzc 生成的 acr 代码。我已经导入了丢失的 h 文件,修复了 body 标签,一切正常……对于任何函数的第一次调用。我在代码中的多个位置调用函数,例如在 viewDidLoad 中:
TestWsdlService_ManagerService* service = [TestWsdlService_ManagerService service];
[service getAttended:self action:@selector(getEventsHandler:) email: @"testmail@bla.com" password: @"testpass"];
第一次通话效果很好。日志记录已启用,因此我看到了正确的帖子和正确的响应。当我再次调用相同的函数时,我只看到正确的帖子,但它给了我一个空响应的错误(没有 xml,什么都没有):
2012-08-14 10:26:55.574 Test[1768:11603] nserror Error Domain=CXMLErrorDomain Code=1
"Unknown error" UserInfo=0x6e5fea0 {NSLocalizedDescription=Unknown error}
2012-08-14 10:26:55.580 Test[1768:11603] Error: Unknown error
我也用这样的单例尝试过:
static TestSoapSingleton *sharedInstance = nil;
+ (TestSoapSingleton *)sharedInstance {
if (sharedInstance == nil) {
sharedInstance = [[super allocWithZone:NULL] init];
}
return sharedInstance;
}
- (id)init
{
self = [super init];
if (self) {
self.manager = [TestWsdlApi_ManagerService service];
self.manager.logging = YES;
self.username =@"testmail@blub.com";
self.password = @"test pass";
}
但最后我得到了同样的错误。该错误在 initWithData 函数的 CXMLDocument.m 中引发,因为 inData 为空 (size=0)。同样在SoapRequest.m 中的connectionDidFinishLoading 函数中,receivedData 是空的。
我尝试调试 SoapRequest.m 并检测到,在函数的第一次和第二次调用中调用了 didReceiveResponse,但仅在第一次调用了 didReceiveData。
如果我像这样在彼此后面进行两个方法调用:
TestWsdlService_ManagerService* service = [TestWsdlService_ManagerService service];
[service getAttended:self action:@selector(getEventsHandler:) email: @"testmail@bla.com" password: @"testpass"];
TestWsdlService_ManagerService* service2 = [TestWsdlService_ManagerService service];
[service2 getAttended:self action:@selector(getEventsHandler:) email: @"testmail@bla.com" password: @"testpass"];
它也可以正常工作。
希望有人有解决办法,谢谢