【发布时间】:2014-05-19 07:58:26
【问题描述】:
我是 iOS 新手。
我使用 2 个键值参数发出请求:
NSString* params = @"sid=d2a8b790364944ef870ed94c1e4fdea3 & phone=+380503424248";
NSURL* url = [NSURL URLWithString:@"http://gps.privatbank.ua/auth/check"];
[request setURL:url];
request.HTTPMethod = @"POST";
request.HTTPBody = [params dataUsingEncoding:NSUTF8StringEncoding];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
NSURLResponse *response;
NSError *error;
NSData *jsonData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
NSDictionary *results = jsonData ? [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers|NSJSONReadingMutableLeaves error:&error] : nil;
NSString *result = [results valueForKey:@"result"];
if([result isEqualToString:@"error"]){
authorizationViewController = [AuthorizationViewController new];
[authorizationViewController openEnterPhone:self];
}
但服务器总是返回响应 {"result":"error"}
当我传递这个数据时,邮递员 - 返回“成功”
同样的请求,但在 Android 应用程序中看起来像:
HttpPost postMethod = new HttpPost("http://gps.privatbank.ua/auth/check");
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("sid", PreferenceController.getSsid(context)));
nameValuePairs.add(new BasicNameValuePair("phone", PreferenceManager.getDefaultSharedPreferences(context).getString("phone_number","")));
postMethod.setEntity(new UrlEncodedFormEntity(nameValuePairs));
ResponseHandler<String> res = new BasicResponseHandler();
String response = getInstance().execute(postMethod, res);
...并返回“成功”。
我错过了哪个参数?
UPD:
我已经明白问题出在哪里了。邮递员将“+”符号(在电话号码中)转换为“%2B”,但我的 POST 请求没有这样做。 那么我必须设置哪个参数来纠正这个问题?
【问题讨论】:
-
在创建
jsonData时尝试分配您的NSError,并首先查看失败的原因。继续往下走