【发布时间】:2015-01-09 23:53:30
【问题描述】:
我正在创建一个 Android 应用程序,并通过 HttpClient 将数据从 Android 应用程序发送到 servlet。我使用 HttpPost 方法。
我在 Android 开发者网站上读到 Apache HttpClient 库在 Android Froyo 2.2 中有一些错误,毕竟使用 HttpUrlConnection 代替 HttpPost 是一种很好的做法。所以我想将我的 HttpPost 代码转换为 HttpUrlConnectio 但不知道如何。
我在这里发布我的 Android 代码以及 servlet 代码
安卓代码
private String postData(String valueIWantToSend[])
{
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
try
{
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("param1",valueIWantToSend[0]));
nameValuePairs.add(new BasicNameValuePair("param2", valueIWantToSend[1]));
nameValuePairs.add(new BasicNameValuePair("param3", valueIWantToSend[2]));
nameValuePairs.add(new BasicNameValuePair("param4", valueIWantToSend[3]));
nameValuePairs.add(new BasicNameValuePair("param5", valueIWantToSend[4]));
nameValuePairs.add(new BasicNameValuePair("param6", valueIWantToSend[5]));
nameValuePairs.add(new BasicNameValuePair("param7", valueIWantToSend[6]));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
/* execute */
HttpResponse response = httpclient.execute(httppost);
HttpEntity rp = response.getEntity();
//origresponseText=readContent(response);
}
catch (ClientProtocolException e)
{
// TODO Auto-generated catch block
}
catch (IOException e)
{
// TODO Auto-generated catch block
}
return null;
}
这是我的 servlet 代码
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.setContentType("text/html");
ObjectOutputStream out = new ObjectOutputStream(response.getOutputStream());
Enumeration paramNames = request.getParameterNames();
String params[] = new String[7];
int i=0;
while(paramNames.hasMoreElements())
{
String paramName = (String) paramNames.nextElement();
System.out.println(paramName);
String[] paramValues = request.getParameterValues(paramName);
params[i] = paramValues[0];
System.out.println(params[i]);
i++;
}
}
【问题讨论】:
-
使用 HttpUrlConnection 的好习惯 不,远离。但看起来你正在使用一个过时的库。 Apache Http 组件现在是 4.3。您似乎仍在使用 2.x。
-
所以HttpClient没有问题?
-
可能与您正在使用的库有关。我不知道。但是
HttpUrlConnection不是一个好的 http 客户端。 -
远离。请你解释一下
标签: java android servlets httpurlconnection apache-httpclient-4.x