首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应用程序拒绝NSUrlConnection IPv6网络发布iOS

应用程序拒绝NSUrlConnection IPv6网络发布iOS
EN

Stack Overflow用户
提问于 2016-08-10 11:55:57
回答 1查看 1.8K关注 0票数 0

iTunes应用程序被拒绝。

理由:

我们在iPhone上发现了应用程序中的一个或多个bug,在连接到IPv6网络的Wi上运行iOS 9.3.4。

具体来说,应用程序内容无法加载。

我们在NAT64网络(从mac安装)上测试了它,它运行得很好,但是苹果审查小组对IPv6网络有一个问题。

我们使用NSURLConnection来调用web服务,但是得到了零响应。

NSURLConnection:connectionDidFinishLoading:被调用,但在IPv6网络中获得零NSData响应,它在IPv4网络中运行良好

json解析代码

代码语言:javascript
复制
NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:receivedData options:kNilOptions | NSJSONReadingAllowFragments | NSJSONReadingMutableContainers error:&error];

获取解析错误的原因是零receivedData :数据无法读取,因为它的格式不正确

在IPv4网络中,以及在IPv6 connectionDidFinishLoading: called中都很好,但是为什么得到零响应呢?

EN

回答 1

Stack Overflow用户

发布于 2016-08-10 12:43:13

改变你的应用程序NSURLSession。使用此委托方法获取响应

service url =“您在这里解析您的url”;

代码语言:javascript
复制
 NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration];
    NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration: defaultConfigObject delegate: self delegateQueue: [NSOperationQueue mainQueue]];
    NSURL * url = [NSURL URLWithString:serviceurl];
    NSMutableURLRequest * urlRequest = [NSMutableURLRequest requestWithURL:url];
    NSURLSessionDataTask * dataTask = [defaultSession dataTaskWithRequest:urlRequest];
    [dataTask resume];

在这个委托方法中,您只需复制和粘贴您的connectionDidFinishLoadingconnectionDidReceiveResponseconnectionDidReceiveDataconnectionDidFailWithError,就应该在(NSURLSession *)会话任务的其他部分:

代码语言:javascript
复制
- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask
    didReceiveResponse:(NSURLResponse *)response
     completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler
    {
        NSLog(@"### handler 1");
        [self.responseData setLength:0];
        completionHandler(NSURLSessionResponseAllow);
    }

    - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask
        didReceiveData:(NSData *)data
    {


    }
    - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task
    didCompleteWithError:(NSError *)error
    {
        if(error == nil)
        {

            NSLog(@"Download is Succesfull");
        }
        else
        {
            NSLog(@"Error %@",[error userInfo]);

        }
    }

我觉得这对你有帮助。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38872768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档