iOS 调用 Web 服务在 4g 上不起作用

标签 ios json web-services 4g

我正在编写一个调用 JSON 网络服务的应用程序。当 iPhone 连接到 WiFi 网络时,它工作正常。但是当它使用蜂窝数据网络时它不起作用。我收到从 [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error] 返回的错误。这是我的代码:

-(BOOL) CallService {
    NSError *error;
    NSData *paramData = [NSJSONSerialization dataWithJSONObject:self.parameter    options:kNilOptions error:&error];

    NSString *serviceUrl = [[NSString alloc] initWithFormat:@"%@%@", self.webHost, self.serviceName];
    NSURL *url = [NSURL URLWithString:serviceUrl];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    [request setHTTPMethod:@"POST"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
    [request setValue:@"json" forHTTPHeaderField:@"Data-Type"];
    [request setValue:[NSString stringWithFormat:@"%d", [paramData length]]  forHTTPHeaderField:@"Content-Length"];
    [request setHTTPBody:paramData];
    NSError *errorReturned = nil;
    NSURLResponse *theResponse =[[NSURLResponse alloc]init];
    NSData *data = [NSURLConnection sendSynchronousRequest:request
                                         returningResponse:&theResponse
                                                     error:&errorReturned];

    BOOL retVal = FALSE;

    if (errorReturned){
        //...handle the error
        NSLog(@"%@", errorReturned.description);
    }
    else {
        self.serviceResult = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
        NSLog(@"%@", error);
        retVal = (BOOL)[self.serviceResult objectForKey:@"Success"];
    }

    return retVal;
}

返回的错误是:

purgeIdleCellConnections: found one to purge conn = 0x1d04d710
2012-11-07 20:17:43.776 iPressBoxx-iPhone[733:907] 
Error Domain=NSCocoaErrorDomain 
Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" 
(JSON text did not start with array or object and option to allow fragments not set.)
 UserInfo=0x1d04eff0 {NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.}

最佳答案

在我看来你是数据,你是 JSON 编码的,或者结果是混淆的。

这里最好的办法是打印出所有原始数据或使用类似 Charles Proxy (http://charlesproxy.com) 的东西来拦截网络请求并查看发生了什么。

关于iOS 调用 Web 服务在 4g 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13281536/

相关文章:

c# - 将图像转换为数据 :image/png;base64 for web page disaplay

jquery - 通过jquery显示json变量

java - Android 上的互联网可用性

android - 如何在 SENCHA TOUCH 中使用 SOAP 网络服务?

ios - 下载.xcdatamodeld文件并以编程方式创建.momd

ios - ScrollView 关闭 subview 后总是回到起始位置

json - 读取大 json 文件的第 n 个元素

jquery - Cordova 混合应用程序与 Siteminder protected REST 资源集成

ios - 在 Swift 中为 UIDatePicker 设置文本颜色

ios - 将底部单元格添加到动态表格 View