Java 为什么我收到Http/1.1400错误请求?
下面是我的代码片段。我正在尝试使用HTTPOST登录该网站 我不断收到“400个坏请求”,我尝试了各种组合。我尝试将用户名/密码作为标题而不是NameValuePair传递。但同样的结果。 我有什么遗漏吗Java 为什么我收到Http/1.1400错误请求?,java,http,httpclient,Java,Http,Httpclient,下面是我的代码片段。我正在尝试使用HTTPOST登录该网站 我不断收到“400个坏请求”,我尝试了各种组合。我尝试将用户名/密码作为标题而不是NameValuePair传递。但同样的结果。 我有什么遗漏吗 HttpClient httpclient = new DefaultHttpClient(); HttpPost post = new HttpPost("https://identi.ca/main/login"); List <Na
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());
HttpClient-HttpClient=newdefaulthttpclient();
HttpPost=新的HttpPost(“https://identi.ca/main/login");
List-nvps=newarraylist();
添加(新的BasicNameValuePair(“昵称”,u));
添加(新的BasicNameValuePair(“密码”,p));
添加(新的BasicNameValuePair(“提交”、“登录”);
setEntity(新的UrlEncodedFormEntity(nvps,HTTP.UTF_8));
HttpResponse response=httpclient.execute(post);
HttpEntity=response.getEntity();
Log.i(“登录表单POST结果:”,response.getStatusLine().toString());
感谢您的帮助。查看该登录页面的源代码,有一个名为
令牌的隐藏字段,您可能必须返回到服务器。您需要首先获取该页面的内容,提取令牌值,并将其包含在POST响应中。如果HTTP服务认为您发送了无效/不正确/不适当的响应,它将发送400响应。无法从代码中判断实际发送的参数是什么,或者(更重要的是)服务器希望您发送什么
要诊断此问题,您需要:
- 找出您的代码实际发送的内容,然后
- 了解服务器希望您发送的内容
第二种可能涉及:
- 查看具有web浏览器的普通用户用于发出请求的网页
- 查看从服务器得到的400响应的主体
- 查看服务器日志,和/或
- 查看服务器的web API文档(或源代码)
在本例中,似乎需要提供一个额外的标记参数
然而,我怀疑你可能采取了完全错误的方法。“identi.ca”站点使用StatusNet,该站点有两个客户端。没有提到与我能看到的“登录”URL交谈。虽然我知道正确答案已经标记,但我想给路过的其他人一些视觉效果。就我而言,这就是导致错误请求的原因
form.add(new BasicNameValuePair("return_url", "https://myexample.example.com/#/providermanageger?vi={VERIFICATION_INTENT_ID}"));
当我删除/#/providermanager
它开始起作用了。因此,请继续尝试错误。您需要向我们展示请求。试着从日志中获取它。我同意“identi.ca”已经发布了API。我正在尝试浏览网站和使用HTTP。谢谢Greg。我会让你知道事情的进展。