クエリに utf-8 文字が含まれていない場合、コードは正常に機能します。utf-8 char が 1 つあるとすぐに、ETools は予期しない結果を提供します。たとえば、"trees"
正しい結果が得られ、"bäume"
(ドイツ語で木を意味する) は奇妙な結果が得られます。ETools は としてクエリを受け取り、"b%C3%A4ume"
ではなく、正確にそれらの文字を含む正確なそのクエリを探しているようです"bäume"
。いくつかのヘッダーパラメーターを設定すると問題が解決する可能性があると思いますが、そこで可能なパラメーターはわかりません。
String query = "some+query+with+utf8+chars";
HttpClient client = new DefaultHttpClient();
HttpPost request = new HttpPost();
List<NameValuePair> parameters = new ArrayList<NameValuePair>();
parameters.add(new BasicNameValuePair("query", query));
parameters.add(new BasicNameValuePair("country", "web"));
parameters.add(new BasicNameValuePair("language", "all"));
parameters.add(new BasicNameValuePair("dataSourceResults", String.valueOf(40)));
parameters.add(new BasicNameValuePair("pageResults", String.valueOf(40)));
request.setEntity(new UrlEncodedFormEntity(parameters, "UTF-8"));
request.setHeader("Content-Type", "application/x-www-form-urlencoded");
request.setURI("http://www.etools.ch/searchAdvancedSubmit.do?page=2");
MyResponse myResponse = client.execute(request, myResponseHandler);
request.reset();
client.getConnectionManager().shutdown();