2012-07-27 46 views
0

我有一些代码发送一个URL到远程服务器。如果我不对网址进行编码,它可以很好地工作。但是,如果我编码的网址,它不起作用。所以我很确定有些东西与我编码url查询字符串的方式不对。ios - 编码url字符串后的问题

这里是我的代码:

 // URL TO BE SUBMITTED. 
     NSString *urlString = 
     @"http://www.mydomain.com/test.php?"; 

     // NOW CREATE URL QUERY STRING  
     NSString *unencoded_query_string = 
     @"name=%@&user_id=%@&person_name=%@&person_email=%@&privacy=%@"; 

// PUT PREVIOUSLY SET VALUES INTO THE QUERY STRING 
     NSString *unencoded_url_with_params = 
     [NSString stringWithFormat:unencoded_query_string, business , user_id , name , email , privacy_string]; 

     // ENCODE THE QUERY STRING 
     NSString *escapedString = (__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(
                         NULL, 
                         (__bridge CFStringRef)unencoded_url_with_params, 
                         NULL, 
                         (CFStringRef)@"!*'();:@&=+$,/?%#[]", 
                         kCFStringEncodingUTF8); 

     // NOW APPEND URL TO QUERY STRING 
     NSString *full_encoded_url_string = 
     [urlString stringByAppendingString: escapedString]; 

,然后我这个字符串发送给服务器,并且服务器确实有调用正确的请求文件,但不能读取参数。

有人会知道我在这里做错了吗?顺便说一句,我正在使用弧。

谢谢!

回答

2

我想你可能想逃避每个参数,而不是整个请求。基本上你想逃避&符号,空格等等,它们在你的变量中出现。您编码的URL可能看起来是这样的:

http://www.mydomain.com/test.php?name%3DPeter%20Willsey%26user_id%3DUSERID%26person_name%3DPeter%20Willsey%26person_email%3Dpeter%40test.com%26privacy%3D1 

,它应该是这样的:

http://www.mydomain.com/test.php?name=Peter%20Willsey&user_id=25&person_name=Peter%20Willsey&person_email=peter%40test.com&privacy=1 
+0

oooooohhh现在我明白了....咄我:) ......我曾尝试编码整个查询url的字符串。所以我需要对我只传递的值进行编码,对吗?谢谢! – GeekedOut 2012-07-27 18:07:36

+0

是的,我认为你只需要做值 – 2012-07-27 18:50:44