使用 NSURL sendSynchronousRequest 并且在 iOS 上使用 Adhoc 构建没有来自服务器的响应

Posted

技术标签:

【中文标题】使用 NSURL sendSynchronousRequest 并且在 iOS 上使用 Adhoc 构建没有来自服务器的响应【英文标题】:Using NSURL sendSynchronousRequest and having no response from the server using Adhoc build on iOS 【发布时间】:2014-11-10 15:03:06 【问题描述】:

所以我有一个应用程序可以向我的远程服务器发送一个同步请求,并且从 xcode 运行它一切正常。问题是当我归档应用程序并将其发送到 TestFlight 时,测试人员没有收到任何响应,发出相同的请求。我正在使用 xcode 的“设备”窗口来查看具有 Adhoc 构建的设备内的日志,它给了我一个来自服务器的空对象。我还从浏览器的 Web 客户端发出请求,以证明服务器上没有错误。代码如下:

-(NSDictionary *)postData:(NSString *)data toUrl:(NSString *)url

    if( nil == url || nil == data ) return nil; 
    NSString *fullUrl = [NSString stringWithFormat:@"%@%@", [self baseUrl], url];

    NSURL * serviceUrl = [NSURL URLWithString:fullUrl];
    NSMutableData *dados = [NSMutableData data];

    [dados appendData: [data dataUsingEncoding: NSUTF8StringEncoding]];

    NSMutableURLRequest * serviceRequest = [NSMutableURLRequest requestWithURL:serviceUrl];
    [serviceRequest setValue:@"application/json; charset=UTF-8" forHTTPHeaderField:@"Content-type"];
    [serviceRequest setHTTPMethod:@"POST"];
    [serviceRequest setHTTPBody:dados];

    NSHTTPURLResponse * serviceResponse;
    NSError * serviceError;
    NSData *dataResponse = [NSURLConnection sendSynchronousRequest:serviceRequest
                                             returningResponse:&serviceResponse
                                                         error:&serviceError];

    NSString *status = [self statusFamily:serviceResponse.statusCode];
    NSDictionary *dataFromResponse = [[QMParser sharedParser] dataToDictionary:dataResponse];

    return [NSDictionary dictionaryWithObjectsAndKeys:serviceResponse, @"response",
                                                           status, @"status",
                                                 dataFromResponse, @"data", nil];

【问题讨论】:

你在哪里使用返回的字典?? 在另一种方法中,即发出请求的方法。 【参考方案1】:

由于配置文件,我遇到了类似的问题。我通过在 Xcode 中自动设置配置文件解决了这个问题(转到项目设置 -> 构建设置 -> 代码签名)。

我认为 TestFlight 需要新的 AdHoc 配置文件。在此修复之前,当应用发出通用 http 请求时,未包含在 AdHoc 配置文件中的每个设备中的应用都会崩溃。

如果这不起作用,请尝试删除所有 prov 配置文件并让 xcode 重新创建它们。

【讨论】:

以上是关于使用 NSURL sendSynchronousRequest 并且在 iOS 上使用 Adhoc 构建没有来自服务器的响应的主要内容,如果未能解决你的问题,请参考以下文章

使用 NSURL 访问本地文件

使用 NSURL 检索托管对象 ID

无法使用 NSURL 访问本地资源。奇怪的

出现错误 - (BOOL)copyItemAtURL:(NSURL *)srcURL toURL:(NSURL *)dstURL 错误:(NSError **)error

Swift 中的 NSURL 数组错误?

如何使用 NSURL 检索本地文件?