Inf*_*izz 12 https android http-get httpclient http-post
我正在使用HttpClient遇到一个奇怪的问题.我正在使用带有HttpPost的DefaultHttpClient().我正在使用HttpGet 100%成功,但现在尝试切换到HttpPost,因为我正在使用的REST API需要POST参数而不是GET.(仅限某些API调用,所以我知道GET调用工作正常,因此它不是API的错误).
此外,我尝试在我写的一个简单的PHP脚本上使用HttpPost查找POST参数'var'并将其回显到屏幕,传递此参数如下工作正常:
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
postMethod = new HttpPost("http://www.examplewebsite.com");
nameValuePairs.add(new BasicNameValuePair("var", "lol"));
try {
postMethod.setEntity(new UrlEncodedFormEntity(nameValuePairs));
response = httpClient.execute(postMethod, responseHandler);
Log.i("RESTMethod", response);
...
Run Code Online (Sandbox Code Playgroud)
问题是,当我尝试对API执行相同的调用时(但明显将params更改为API参数),我收到以下错误:
Authentication error: Unable to respond to any of these challenges: {}
Run Code Online (Sandbox Code Playgroud)
我请求的页面是一个HTTPS页面,这可能是问题吗?
但是对API上的原始HTTP页面执行相同类型的POST请求会产生相同的错误,除非我注释掉StringEntity部分然后它运行(但返回xml并且我想传递一个参数来请求JSON中的数据) .
这似乎是一个非常奇怪的问题(非https部分),但无法真正找到任何关于这个问题的帮助,所以很抱歉,如果答案在那里.
有任何想法吗?
提前致谢,
Infinitifzz
编辑:好的,我无处可去所以我想如果我引导你进入API可能会有所帮助,那就是8Tracks API,你可以看到你需要为所有请求传递一个dev键(api_key)而我我坚持使用https来记录用户:http://www.8tracks.com/sessions.xml "part.
希望这会有所帮助因为我走到了尽头.
谢谢,
Infinitifizz
ok2*_*k2c 12
身份验证错误:无法应对任何这些挑战:{}
此错误消息表示服务器响应401 (Unauthorized)状态代码但未能提供单个auth质询(WWW-Authenticate标头),因此HttpClient无法自动从身份验证失败中恢复.
最有可能的应用程序需要HTTP POST请求中包含的HTML表单中的一些软凭据.
不需要声明端口和协议吗?我只是在炫耀这段代码,所以如果它没有立即正确编译,请不要沮丧。另外,我通常向我的 setCredentials() 提供 UsernamePasswordCredentials 但我想它是相同的。
HttpHost host = new HttpHost("www.foo.com", 443, "https");
// assemble your GET or POST
client.getCredentialsProvider().setCredentials(new AuthScope(host.getHostName(), host.getPort()));
HttpResponse response = client.execute(host, [HttpPost or HttpGet]);
Run Code Online (Sandbox Code Playgroud)
有关 setCredentials 的更多信息请参见此处。