【发布时间】:2017-01-11 21:31:39
【问题描述】:
******************已编辑************************
我对 iOS 比较陌生,我想使用以下代码进行发布请求:
我收到 NSLocalizedDescription=请求失败:不可接受的内容类型:text/html,NSErrorFailingURLKey=https://xxxxxx-xxxxxx/xxxx/xxxx}},com.alamofire.serialization.response.error.response= { URL:https://xxxxxx/xxx/xxxx/xxxxxs }
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
AFJSONRequestSerializer *requestSerializer = [AFJSONRequestSerializer serializer];
[requestSerializer setValue:token1 forHTTPHeaderField:@"Authorization"];
[requestSerializer setValue:@"PP" forHTTPHeaderField:@"x-service-code"];
[requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[manager setRequestSerializer:requestSerializer];
NSDictionary *params = [[NSDictionary alloc] initWithObjectsAndKeys:
token.tokenId, @"payment_method_nonce",
details.city, @"city",
details.address1, @"address1",
details.state, @"state",
details.zipcode, @"zip",
nil];
[manager POST:url parameters:params
success:^(NSURLSessionDataTask *task, id responseObject)
{
NSLog(@"SUCCEEDED");
}
failure:^(NSURLSessionDataTask *task, NSError *error)
{
loadingOverlay.hidden = YES;
NSLog(@"FAILED %@",error);
}];
我发现了问题所在:我需要将参数作为原始 JSON 发送,但它没有这样做。我如何做到这一点?
我希望参数采用原始格式,即
{"payment_method_nonce":"tok_xxxxxxxx"}
【问题讨论】:
-
unacceptable content-type: text/html。尝试将text\html添加到接受的内容类型。 -
不起作用 + 我们的服务器不接受该格式。我已经验证问题不是标题而是参数正文。它需要作为原始 json 发送。如何将参数转换为原始 JSON?
-
如何使用 JSON 格式的正文发送包含地址和令牌以及其他详细信息的发布请求?
-
由于您将
requestSerializer设置为AFJSONRequestSerializer,它本身应该将参数转换为JSON 并将它们放入正文中。简单来说就是:NSDictionary ---(NSJSONSerialization)--> NSData (JSON 表示) --> theNS(Mutable)Request.htttpBody = theJSONNSData. -
我不知道是什么问题。我可以尝试使用构造 WithBodyBlocks 吗?
标签: ios objective-c iphone xcode afnetworking-2