【发布时间】:2014-03-31 00:57:47
【问题描述】:
我正在实施以下贝宝 REST API:
curl -v https://api.sandbox.paypal.com/v1/vault/credit-card \
-H 'Content-Type:application/json' \
-H 'Authorization: Bearer {accessToken}' \
-d '{
"payer_id":"user12345",
"type":"visa",
"number":"4417119669820331",
"expire_month":"11",
"expire_year":"2018",
"first_name":"Joe",
"last_name":"Shopper"
}'
我已经使用以下代码在 AFNetworking 1.3.3 中成功实现了这个 api。其中PPWebService 是AFHTTPClient 的子类
[[PPWebService sharedClient] setParameterEncoding:AFJSONParameterEncoding];
[[PPWebService sharedClient] setDefaultHeader:@"Content-Type" value:@"application/json"];
[[PPWebService sharedClient] setDefaultHeader:@"Authorization" value:[NSString stringWithFormat:@"Bearer %@", accessToken]];
[[PPWebService sharedClient] postPath:@"vault/credit-card"
parameters:creditCard
success:^(AFHTTPRequestOperation *operation, id responseObject)
{
NSDictionary *response = [self JSONToObject:operation.responseString];
creditCardId = response[@"id"];
if(creditCardId)
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Credit card" message:@"Saved !!" delegate:nil cancelButtonTitle:@"on" otherButtonTitles:nil];
[alert show];
}
}
failure:^(AFHTTPRequestOperation *operation, NSError *error)
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Credit card" message:error.description delegate:nil cancelButtonTitle:@"on" otherButtonTitles:nil];
[alert show];
}];
我想在我的项目中使用 AFNetworking 2.x.x。但是我不能用这个新版本来做到这一点。
我有子类AFHTTPRequestOperationManager。我搜索互联网,人们建议我使用AFJSONRequestSerializer。所有其他代码都非常相似。但是我也收到了错误的请求错误。
那么如何在 AFNetworking 2.x.x 中使用 POST 方法发送原始 JSON 字符串?
编辑
错误状态:404 Bad Request
回应:
{"name":"MALFORMED_REQUEST","message":"The request JSON is not well formed.","information_link":"https://developer.paypal.com/docs/api/#MALFORMED_REQUEST","debug_id":"ab3c1dd874a07"}
我使用 Postman 得到了正确的响应,如下图所示。
【问题讨论】:
-
你能发布你尝试的代码,以及具体的错误吗?
-
您能否使用 charlesproxy 之类的工具准确查看您发送到服务器的内容,并将该信息以及代码添加到您的问题中。
-
@Aaron Brager 我有更新问题的代码,所以请看一下。
-
@JosephH 感谢您向我推荐该工具。我会使用它并尽快回来。
-
我的猜测是您需要对您的 accessToken 进行 UFT8Encode,您是否在显示的代码之外的其他地方执行此操作?
标签: ios rest paypal afnetworking-2