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);
}
}];