我只是一個好奇的問題。我對Android的一個HttpPost請求看起來是這樣的:HttpServletRequest從我的httppost獲取無參數
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();
}
在我的服務器端,我有一個監聽請求和一個servlet解析參數:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Enumeration en = request.getParameterNames();
while (en.hasMoreElements()){
System.out.println(en.nextElement());
}
}
當我執行這個代碼,該servlet根本沒有看到任何參數。但是,如果我用此代碼替換整個「參數」塊:
//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();
}
我的servlet可以解析參數。這不是問題,我只是要使用實體,但我的問題是,爲什麼我的servlet不能從第一個代碼塊中獲取參數? setParams有什麼問題?爲什麼servlet可以看到參數,如果我讓它們成爲一個實體?
這是一個非常好的解釋!謝謝,這正是我想要的。 – Otra