0

2 つのパラメーターを持つ POST メッセージを PHP サーバーに送信しています。1 つは Base64 の HASH です。Base64 では文字「=」がパディングとして使用されるため、ハッシュ値に表示されます。

public void postData() {
    // Create a new HttpClient and Post Header
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://www.yoursite.com/script.php");

    try {
        // Add your data
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("id", "WAFFTE="));
        nameValuePairs.add(new BasicNameValuePair("stringdata", "data"));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(httppost);

    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
    } catch (IOException e) {
        // TODO Auto-generated catch block
    }
} 

このコードでは、URL は %3D によって「=」をエンコードしていますが、その場合、サーバーは ID 値を認識しません。異なるコーディングを選択しようとしましたが、違いはありません。

    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs),"UTF-8");

何か助けはありますか?

4

1 に答える 1

0

ポスト引数から「=」を削除する必要はないようですが、セパレーターとの混同を避けるために推奨されます。そのため、Base64 エンコーディングでフラグ URL_SAFE および NO_PADDING を使用するのが最善です。

これが同じ問題を抱えている他の人に役立つことを願っています。

于 2013-01-10T10:04:50.650 に答える