0

Android アプリケーションから NodeJs サーバーにフォーム データを転送しようとしています。私のクライアント コードは次のとおりです (UTF-8 文字を含むことができる文字列は の値ですparams):

final HttpPost post = new HttpPost(url);

final MultipartEntityBuilder mpb = MultipartEntityBuilder.create()
.setCharset(Charset.forName("UTF-8"))  // tried with or without this line
.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); // tried with or without this line

for (final Entry<String, String> e : params.entrySet()) {
  mpb.addTextBody(e.getKey(), e.getValue());
}
post.setEntity(mpb.build());
final HttpClient httpClient = new DefaultHttpClient();
final HttpResponse response = httpClient.execute(request);

私のサーバーコードは次のとおりです。

app.post('/accesspoint', function(req, res) {
  var body = req.body;
  var form = new formidable.IncomingForm();
  form.encoding = 'utf-8';

  form.parse(req, function(err, fields, files) {
    console.log(fields);
    ...

入力JavaparamsにUTF-8文字を含む値がある場合、サーバー側で取得したログには、この文字なしで対応する値が出力されるため、ある時点で飲み込まれます。たとえば、入力文字列が"ê"の場合、サーバー ログに""値が出力されます。

非 ASCII 文字を含む可能性のあるデータを送信する最良の方法であると読んだので、マルチパート フォームを使用します。Formidable は、明らかに、UTF-8 文字を含むことができるフォームを処理するための最良のノード パッケージです。

私のクライアント側は Apache HttpClient 4.3.3 を使用しています。

私は何を間違っていますか?

4

1 に答える 1