プロジェクトでは、インターフェイスリクエストがpostmanでは成功しても、クライアントサイドでは失敗するという状況によく遭遇します。
postmanでのリクエスト結果
クライアント側での結果要求
実際には、このような状況は、バックエンドの同僚を見てみましょう、または彼のバックエンドの同僚は、それがうまく調整することができます。しかし、あなたが遭遇した場合はアウトソーシングであり、バックエンドは自分の人ではなく、あなたと協力して喜んでいない、その後、あなただけの痛みをいじくり回すことができます。
アンドロイドの同僚に聞いたところ、彼の方では正常にリクエストできるようです。
コードを提示します:
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];