簡體   English   中英

ios - 編碼url字符串后的問題

[英]ios - problems after encoding a url string

我有一些代碼將URL發送到遠程服務器。 如果我不對網址進行編碼,它就能完美運行。 但是,如果我編碼網址,它不起作用。 所以我很確定我編碼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];

然后我將此字符串發送到服務器,並且服務器確實調用了正確的請求文件,但無法讀取參數。

誰會知道我在這里做錯了什么? 我順便使用arc。

謝謝!

我想你可能想要逃避每個參數,而不是整個請求。 基本上你想要逃避你的獲取變量中出現的&符號,空格等。 您編碼的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM