在 Apache HttpClient 中使用 euc-jp 发送 UrlEncodedForm 数据

Send UrlEncodedForm data using euc-jp in Apache HttpClient

我想知道如何使用 euc-jp 编码发送表单数据。我在下面进行编码的尝试仍然将日文文本发送为?和奇怪的字符。谢谢!

这就是我目前的做法(无法正常工作):

HttpPost request = new HttpPost("http://httpbin.org/post");
List<NameValuePair> params = new ArrayList<>();
params.add(new BasicNameValuePair("Testing", "雄大"));
request.setEntity(new UrlEncodedFormEntity(params, forName("EUC-JP")));

我觉得你的代码不错。 httpbin.org 似乎没有处理 EUC-JP 作为回应。相反,您可以使用 putsreq.com 查看您的请求参数。

import java.util.*;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.client.methods.*;
import org.apache.http.NameValuePair;
import java.nio.charset.*;
import org.apache.http.impl.client.*;
import org.apache.http.client.*;
import org.apache.http.*;
import java.io.*;

class Main {
  public static void main(String[] args) throws Exception {
    HttpClient httpclient = new DefaultHttpClient();
    // Create new PutsReq URL by yourself
    HttpPost request = new HttpPost("https://putsreq.com/xxxxxxxxxxxxxxxxxxxx");
    List<NameValuePair> params = new ArrayList<>();
    params.add(new BasicNameValuePair("Testing", "雄大"));
    request.setEntity(new UrlEncodedFormEntity(params, Charset.forName("euc-jp")));
    HttpResponse response = httpclient.execute(request);
    BufferedReader reader =  new BufferedReader(new InputStreamReader((response.getEntity().getContent())));
    while ((reader.readLine()) != null) {
      System.out.println (reader.readLine());
    }
    reader.close();
  }
}

你会看到

Testing=%CD%BA%C2%E7

在检查页面中。 0xCDBA 表示 EUC-JP 中的