如果查询不包含任何 utf-8 字符,则代码可以正常工作。只要有一个 utf-8 字符,ETools 就会提供我没想到的结果。例如,对于"trees"
我得到正确的结果,对于"bäume"
(树木的德语单词),我得到奇怪的结果。看起来 ETools 接收查询 as"b%C3%A4ume"
并查找具有精确那些字符而不是 for 的查询"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();