我的客户端通过Post发送到"abc+def",然后再次从服务器获取字符串
但是返回字符串是"abcdef"。为什么?如何保持abc+def?
-iOS客户端-
NSError * error=nil;
NSString * str=[NSString stringWithFormat:@"selected_card=@"abc+def"];
NSData * postData= [str dataUsingEncoding:NSUTF8StringEncoding];
NSString *myString = [[NSString alloc] initWithData:postData encoding:NSUTF8StringEncoding];
NSLog(@"myString=%@",myString);
[req setHTTPMethod:@"POST"];
[req setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[req setHTTPBody:postData];
NSHTTPURLResponse * response=nil;
NSData *data=[NSURLConnection sendSynchronousRequest:req returningResponse:&response error:&error];
if(data!=nil)
{
NSLog(@"error:%@",error);
NSDictionary * cardDictionary= [NSJSONSerialization JSONObjectWithData:data
options:NSJSONReadingMutableLeaves
error:&error];
NSLog(@"return string:%@",[cardDictionary objectForKey:@"card1"]);
}
-服务器
...
$user_table = $_POST['id']."_card";
$select_card_drawing_url=$_POST['selected_card'];
$response=array("card1" => $select_card_drawing_url);
echo json_encode($response);
return ;
?>
-客户端日志-
MyString=abc+def
return String: abc def
您以application/x-www-form-urlencoded
格式发布数据。在这种格式中,加号(+
)具有特殊的挖掘功能:它对空白进行编码。要获得预期结果,必须将+
编码为%2b
:
NSString * str=[NSString stringWithFormat:@"selected_card=@"abc%2bdef"];
您必须对此格式传递的每个参数值进行编码(它遵循与URL中的参数相同的编码规则)。有关iOS中URL编码的更多信息:如何对字符串进行URL编码