У меня просто вопрос из любопытства. У меня есть запрос HttpPost в Android, который выглядит примерно так:
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(getString(R.string.url));
//This code does not work
HttpParams params = new BasicHttpParams();
params.setParameter("type", "20");
post.setParams(params);
try {
HttpResponse response = client.execute(post);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
На моем сервере у меня есть сервлет, который прослушивает запросы и анализирует параметры:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Enumeration en = request.getParameterNames();
while (en.hasMoreElements()){
System.out.println(en.nextElement());
}
}
Когда я выполняю этот код, сервлет вообще не видит никаких параметров. Но если я заменю весь блок «параметра» на этот код:
//This code works
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(5);
nameValuePairs.add(new BasicNameValuePair("type", "20"));
try {
post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Мой сервлет может анализировать параметры. Это не проблема, я просто собираюсь использовать сущность, но мой вопрос: почему мой сервлет не может получить параметры из первого куска кода? Что не так с setParams? Почему сервлет может видеть параметры, если я делаю их сущностью?