iOS開發(fā)問題

AFNetworking的body如何傳json類型

parameters加入body中,UTF-8格式

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
//發(fā)送類型(二進制格式)
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
//接收類型(二進制格式)
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
//超時時間
manager.requestSerializer.timeoutInterval = 20.0;

[manager PUT:URLString parameters:parameters success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
    //查看body內(nèi)容,data轉(zhuǎn)string
    if(task.originalRequest.HTTPBody != nil){
        NSString *str = [[NSString alloc] initWithData:task.originalRequest.HTTPBody encoding:kCFStringEncodingUTF8];
        NSLog(@"成功,打印httpBody:%@", str);
    }
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
    //查看body內(nèi)容,data轉(zhuǎn)string
    if(task.originalRequest.HTTPBody != nil){
        NSString *str = [[NSString alloc] initWithData:task.originalRequest.HTTPBody encoding:kCFStringEncodingUTF8];
        NSLog(@"成功,打印httpBody:%@", str);
    }
}];

parameters加入body中,JSON格式

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
//發(fā)送類型(JSON格式)
manager.requestSerializer = [AFJSONRequestSerializer serializer];
//接收類型(二進制格式)
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
//超時時間
manager.requestSerializer.timeoutInterval = 20.0;
//寫與不寫對最終結(jié)果不造成影響
[manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
//寫與不寫對最終結(jié)果不造成影響
[manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];

[manager PUT:URLString parameters:parameters success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
    //查看body內(nèi)容,json解析
    if(task.originalRequest.HTTPBody != nil){
        NSString *str = [NSJSONSerialization JSONObjectWithData:task.originalRequest.HTTPBody options:0 error:nil];
        NSLog(@"成功,打印httpBody:%@", str);
    }
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
    //查看body內(nèi)容,json解析
    if(task.originalRequest.HTTPBody != nil){
        NSString *str = [NSJSONSerialization JSONObjectWithData:task.originalRequest.HTTPBody options:0 error:nil];
        NSLog(@"成功,打印httpBody:%@", str);
    }
}];

附:一種錯誤的寫法

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
//發(fā)送類型(二進制格式)
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
//接收類型(二進制格式)
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
//超時時間
manager.requestSerializer.timeoutInterval = 20.0;
//這里一旦多加這句,就會造成400錯誤。數(shù)據(jù)解析失敗。AFNetworking沒法正常解析需發(fā)送的body
[manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

[manager PUT:URLString parameters:parameters success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
    //查看body內(nèi)容,data轉(zhuǎn)string
    if(task.originalRequest.HTTPBody != nil){
        NSString *str = [[NSString alloc] initWithData:task.originalRequest.HTTPBody encoding:kCFStringEncodingUTF8];
        NSLog(@"成功,打印httpBody:%@", str);
    }
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
    //查看body內(nèi)容,data轉(zhuǎn)string
    if(task.originalRequest.HTTPBody != nil){
        NSString *str = [[NSString alloc] initWithData:task.originalRequest.HTTPBody encoding:kCFStringEncodingUTF8];
        NSLog(@"成功,打印httpBody:%@", str);
    }
}];

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容