小编典典

使用JSON的可可错误3840(iOS)

json

我正在尝试将数据发送到服务器并接收JSON格式的响应。问题是服务器必须返回“成功”或“失败”,但它返回“(空)”。

这是返回的错误:

错误域= NSCocoaErrorDomain代码=
3840“操作无法完成。(可可错误3840。)”(JSON文本不是以数组或对象开头,并且没有允许设置片段的选项。)UserInfo =
XXXXXXXXX {NSDebugDescription = JSON文本并非以数组或对象以及允许未设置片段的选项开头。}

错误是否可能在服务器脚本中?

这是我发送数据并接收响应的功能:

- (void) putData:(NSString *)parameter valor:(NSString *)valor {

    NSString *rawString = [NSString stringWithFormat:@"%@=%@", parameter, valor];
    NSData *data = [rawString dataUsingEncoding:NSUTF8StringEncoding];
    NSURL *url = [NSURL URLWithString:@"http://www.xxx.xxx/xxx.php"];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    [request setHTTPMethod:@"PUT"];
    [request setHTTPBody:data];
    NSURLResponse *response;
    NSError *error;
    NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
    NSMutableDictionary *json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
    NSLog(@"responseData: %@ error: %@", json, error);
}

阅读 333

收藏
2020-07-27

共1个答案

小编典典

除非您将选项传递NSJSONReadingAllowFragments[NSJSONSerialization JSONObjectWithData:options:error:]服务器,否则服务器返回的响应必须是有效的JSON,并带有顶级容器,该容器是数组或字典。

例如:

    { "response" : "Success" }

PS:如果您想要可变的字典,则还必须NSJSONReadingMutableContainers在选项中包括。

2020-07-27