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はこれから私を助けます。
UrlEncodedFormEntity
を使用しています。これにより、コンテンツが RLエンコード になります。旋削@
から%40
はこのエンコーディングでは正常です。受信者はそれを自動的にデコードできるはずですが、それを行うには正しいコンテンツタイプを使用する必要があるかもしれませんが、おそらくapplication/x-www-form-urlencoded
。
URLDecoder.decode(url)
を使用してください。これは役に立ちます。
%40
を@
に戻すことができるように、サーバー側で RLDecoder などを使用する必要があります。同じことが他の特殊文字にも当てはまります。
使用できます
URLDecoder.decode("urlcontext", "UTF-8");
渡すURLから特殊文字を削除します