web-dev-qa-db-ja.com

@ HTTPPostリクエストで%40に変換

webサービスにPOSTリクエストを送信しようとしています。パラメータに特殊文字@を追加すると、%40に変換されます。サーバー側を確認しました。@ではなく%40を取得しています。誰かが私を助けることができますか?これが私のコードです。

httpclient = new DefaultHttpClient();
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("Email", "[email protected]"));


httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
 ResponseHandler<String> responseHandler = new BasicResponseHandler();
String response = httpclient.execute(httppost,responseHandler);

また、パラメーターがエンコードされないようにするために、この方法を試しました。

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, HTTP.PLAIN_TEXT_TYPE));

しかし、サポートされていないエンコードされたアルゴリズムが発生しました

plsはこれから私を助けます。

9
Nirav Bhandari

UrlEncodedFormEntityを使用しています。これにより、コンテンツが RLエンコード になります。旋削@から%40はこのエンコーディングでは正常です。受信者はそれを自動的にデコードできるはずですが、それを行うには正しいコンテンツタイプを使用する必要があるかもしれませんが、おそらくapplication/x-www-form-urlencoded

7
Bruno

URLDecoder.decode(url)を使用してください。これは役に立ちます。

3
Kavin Varnan

%40@に戻すことができるように、サーバー側で RLDecoder などを使用する必要があります。同じことが他の特殊文字にも当てはまります。

3
npinti

使用できます

URLDecoder.decode("urlcontext", "UTF-8");

渡すURLから特殊文字を削除します

2
Rajesh D