Iphone SBJson为在多个请求发送中得到延迟响应的连接返回null responseData
在这里,我尝试使用向python服务器发送异步调用。对于具有相同请求的连续多个调用,在响应字符串中提供Iphone SBJson为在多个请求发送中得到延迟响应的连接返回null responseData,iphone,ios,json,ipad,sbjson,Iphone,Ios,Json,Ipad,Sbjson,在这里,我尝试使用向python服务器发送异步调用。对于具有相同请求的连续多个调用,在响应字符串中提供null值 在这里,我尝试了: - (NSURLConnection *) GetHttpConnection:(NSString *)Path:(NSDictionary *)requestData:(UIView *)appView { NSString *jsonReq = nil; NSData *reqData = nil; if (requestData !
null
值
在这里,我尝试了:
- (NSURLConnection *) GetHttpConnection:(NSString *)Path:(NSDictionary *)requestData:(UIView *)appView {
NSString *jsonReq = nil;
NSData *reqData = nil;
if (requestData != nil) {
jsonReq = [requestData JSONRepresentation];
reqData=[NSData dataWithBytes:[jsonReq UTF8String] length:[jsonReq length]];
}
NSString *urlString = [NSString stringWithFormat:@"%@/%@", URL, Path];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:urlString]];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
if (reqData) {
[request setHTTPBody:reqData];
}
[request setHTTPMethod:@"POST"];
NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:self];
if (connection) {
responseData = [[NSMutableData data] retain];
}
return connection;
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
[connection release];
NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
NSLog(@"Connection Finish Loading >>>>> %@",responseString);
responseData = nil;
if (responseString && [responseString JSONValue] != nil) {
// process response string and send response back to delegate method
}
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSMutableData*)data {
[responseData appendData:data];
}
跟踪NSlog
响应后,我发现,
如果我发送相同的请求3次(按更新详细信息按钮)
connectiondFinishLoading
应该调用3次,并且它正在调用它。但对于任何(一)个请求,相应的响应数据返回null
。这就是为什么JSON声明如下
JSONValue失败。错误跟踪是:(
“Error Domain=org.brautaset.JSON.ErrorDomain Code=11\“字符串意外结束\”UserInfo=0x909d4b0{NSLocalizedDescription=意外
字符串结尾}“
如何克服这种情况?或者代码中是否有任何错误
谢谢!您的类不是可重入者,因为只有一个对responseData的引用。如果两个请求同时运行,则会发生不好的事情。为此,您需要将requestData放入NSURLConnection键入的字典中,或者为每个请求创建另一个下载程序实例。是否实现了lso
-(void)connection:(NSURLConnection*)connection didReceiveData:(NSData*)data
委托方法?我看不到它here@Yajushi,仅供参考,requestData
的开头括号似乎没有结尾谢谢Stig,我会试试你的建议。