我无法从Android-API中获取HttpParams内容。
我只是想通过我的Postrequest发送一些简单的参数。除参数外,一切正常。将参数设置为postrequest的代码:
HttpParams params = new BasicHttpParams();
params.setParameter("password", "secret");
params.setParameter("name", "testuser");
postRequest.setParams(params);
似乎这段代码根本没有添加任何参数,因为服务器总是回答,我的请求缺少“名称” - 参数。
实际按预期工作的示例:
ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("name", "testuser"));
postParameters.add(new BasicNameValuePair("password", "secret"));
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParameters);
postRequest.setEntity(formEntity);
但我想使用第一个例子的版本,因为它更容易阅读和理解。
任何提示都非常感谢!
答案 0 :(得分:2)
一旦我遇到同样的问题,我就像你一样解决它...我记得我发现了一些关于为什么不起作用的话题。这是Apache在服务器端实现的库。
不幸的是,我现在无法找到这个话题,但如果我是你,我会让它继续工作,不会过分担心这种优雅&#34;代码,因为你可能做的事情很多,如果可以的话,它根本就不实用。
答案 1 :(得分:1)
尝试以第一种方式使其工作,但似乎HttpParams
接口并非旨在为此构建。谷歌搜索了一段时间后,我发现this SO answer解释了它:
HttpParams接口不用于指定查询字符串参数,它用于指定HttpClient对象的运行时行为。
但文档并不具体:
HttpParams接口表示一组不可变值,用于定义组件的运行时行为。
为了设置连接和请求超时,我使用了HttpParams
和List<NameValuePair>
的混合,它们功能齐全并使用了API {8}中提供的AndroidHttpClient
类:
public HttpResponse securityCheck(String loginUrl, String name, String password) {
AndroidHttpClient client = AndroidHttpClient.newInstance(null);
HttpPost requestLogin = new HttpPost(
loginUrl + "?");
//Set my own params using NamaValuePairs
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("j_username", name));
params.add(new BasicNameValuePair("j_password", password));
//Set the timeouts using the wrapped HttpParams
HttpParams httpParameters = client.getParams();
int timeoutConnection = 3000;
HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
int timeoutSocket = 5000;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
try {
requestLogin
.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
HttpResponse response = client.execute(requestLogin);
return response;
} catch (Exception e) {
Log.e(TAG, e.getMessage(), e);
return null;
}finally {
client.close();
}
}
另见: