0

リモートサーバーにURLを送信するためのコードがあります。URLをエンコードしない場合は、完全に機能します。しかし、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];

次に、この文字列をサーバーに送信すると、サーバーで正しい要求ファイルが呼び出されますが、パラメーターを読み取ることができません。

私がここで間違っていることを誰かが知っていますか?ちなみにアークを使っています。

ありがとう!

4

1 に答える 1

2

リクエスト全体ではなく、各パラメータをエスケープしたいと思うかもしれません。基本的に、get変数に表示されるアンパサンドやスペースなどをエスケープする必要があります。エンコードされた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
于 2012-07-27T18:03:44.037 に答える