繁体   English   中英

AFNetwork与put和request主体

[英]AFNetworking with put and request body

我尝试发送带身体的推杆,但作为回应,我收到了

JSON: {
errorr = "BAD json format";
success = 0;
}

我尝试使用与Rest Web Service客户端代码中相同的字符串(json数组),但效果很好,但在我的应用程序中却无法使用

NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys: carID, @"product_id", firstname.text, @"firstname", surname.text, @"lastname", phone.text, @"telephone", email.text, @"email", orderWithUserInfo, @"options", nil];
 NSLog(@"JSON: %@", dic);
NSData *jsonData2 = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONReadingMutableContainers error:nil];
NSLog(@"JSON: %@", jsonData2);
NSString *jsonString = [[NSString alloc] initWithData:jsonData2 encoding:NSUTF8StringEncoding];
NSLog(@"jsonData as string:\n%@", jsonString);
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    manager.responseSerializer = [AFJSONResponseSerializer serializer];
    [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
    [manager.requestSerializer setValue:@"application/json;charset=UTF-8" forHTTPHeaderField:@"Content-Type"];
    [manager.requestSerializer setValue:@"34987598743" forHTTPHeaderField:@"X-Oc-Merchant-Id"];
    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
    AFHTTPRequestOperation *operationA = [manager PUT:@"http://***/api/rest/addorders" parameters:jsonString success:^(AFHTTPRequestOperation *operation, id responseObject) {

      NSLog(@"JSON: %@", responseObject);

        //[self showStream:carsList];
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {

        // 4
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error"
                                                            message:[error localizedDescription]
                                                           delegate:nil
                                                  cancelButtonTitle:@"Ok"
                                                  otherButtonTitles:nil];
        [alertView show];
    }];

所以我不知道问题出在哪里

我添加了manager.requestSerializer = [AFJSONRequestSerializer serializerWithWritingOptions:dic]; 它解决了问题

以NSDictionary的形式传递参数,管理器将处理序列化。

  AFHTTPRequestOperation *operationA = [manager PUT:@"http://***/api/rest/addorders" parameters: dic success:^(AFHTTPRequestOperation *operation, id responseObject) { 


    }

PUT的方法签名为:

- (AFHTTPRequestOperation *)PUT:(NSString *)URLString parameters:(NSDictionary *)parameters success:(void ( ^ ) ( AFHTTPRequestOperation *operation , id responseObject ))success failure:(void ( ^ ) ( AFHTTPRequestOperation *operation , NSError *error ))failure;

因此,您必须传递NSDictioanry而不是NSString 。检查请求序列化程序是否已初始化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM