项目常遇到一种情况,接口在postman上请求成功,在客户端请求失败
在postman请求的结果
在客户端请求结果
其实这种情况让后端同事看一下,或者他后端同事调整一下就好了。但是如果遇到的是外包,后端不是自己人,而且不愿意配合你的话那只能自己摸索,痛苦。
询问了一下安卓的同事,他那边可以请求成功,原因是要将参数转换成json上传
代码奉上:
WS(ws);
NSMutableDictionary *param = [NSMutableDictionary new];
param[@"phone"] = @"电话号码";
//去掉空格转换成json
NSError *error = nil;
NSData *data = [NSJSONSerialization dataWithJSONObject:param options:NSJSONWritingPrettyPrinted error:&error];
NSString *jsonStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSMutableString *mutStr = [NSMutableString stringWithString:jsonStr];
AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:[NSURL URLWithString:yourUrl]];
AFHTTPRequestSerializer *requestSerializer = [AFHTTPRequestSerializer serializer];
requestSerializer.timeoutInterval = 10;
manager.requestSerializer = requestSerializer;
manager.requestSerializer=[AFJSONRequestSerializer serializer];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
manager.requestSerializer.stringEncoding = NSUTF8StringEncoding;
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:[NSString stringWithFormat:yourUrl]]];
request.HTTPMethod = @"POST";
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
NSString *postStr = [NSString stringWithFormat:@"%@",mutStr];
[request setHTTPBody:[postStr dataUsingEncoding:NSUTF8StringEncoding]];
NSURLSessionTask *task = [manager dataTaskWithRequest:request completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)response;
if (httpResponse.statusCode == 200) {
NSString *url = responseObject[@"data"];
ws.urlStr = url;
NSURL *URL = [NSURL URLWithString:ws.urlStr];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:URL];
[ws.webView loadRequest:request];
}else{
}
}];
[task resume];