2012-07-27 47 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