这是我的代码片段。我正在尝试使用 HTTPOST 登录该网站。
我不断收到“400 Bad Request”我尝试了各种组合。我尝试将用户名/密码作为标头而不是 NameValuePair 传递。但结果相同。
我有什么遗漏的吗?
HttpClient httpclient = new DefaultHttpClient();
HttpPost post = new HttpPost("https://identi.ca/main/login");
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("nickname", u));
nvps.add(new BasicNameValuePair("password", p));
nvps.add(new BasicNameValuePair("submit", "Login"));
post.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
HttpResponse response = httpclient.execute(post);
HttpEntity entity = response.getEntity();
Log.i("Login form POST result: ", response.getStatusLine().toString());
感谢帮助。
如果 HTTP 服务认为您发送了无效/不正确/不适当的内容,则会发送 400 响应。无法从您的代码中得知发送的实际参数是什么,或者(更重要的是)服务器期望您发送什么。
要诊断此问题,您需要:
- 找出您的代码实际发送的内容,以及
- 找出服务器期望您发送的内容。
第二个可能涉及:
- 查看使用网络浏览器的普通用户用来发出请求的网页,
- 查看从服务器获得的 400 响应的正文,
- 查看服务器日志,和/或
- 查看服务器的 Web API 文档(或源代码)。
在这种情况下,看起来有一个额外的token
需要提供的参数。
但是,我怀疑您可能完全采取了错误的方法。 “identi.ca”网站使用 StatusNet,其中有几个已发布的 API http://status.net/wiki/API为客户。没有提到与我可以看到的“登录”URL 进行对话。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)