Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone SBJson为在多个请求发送中得到延迟响应的连接返回null responseData_Iphone_Ios_Json_Ipad_Sbjson - Fatal编程技术网

Iphone SBJson为在多个请求发送中得到延迟响应的连接返回null responseData

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 !

在这里,我尝试使用向python服务器发送异步调用。对于具有相同请求的连续多个调用,在响应字符串中提供
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,我会试试你的建议。