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 を使用しています。
私は何を間違っていますか?