我遇到了一个使用HttpClient的奇怪问题。我正在使用HttpPost的DefaultHttpClient()。我以100%的成功使用HttpGet,但现在试图切换到HttpPost,因为我使用的REST API需要POST参数而不是GET。 (只有一些API调用,所以我知道GET调用工作正常,所以它不是API的错误)。在Android上使用HttpPost和DefaultHttpClient时的身份验证错误
而且,我尝试使用HttpPost上一个简单的PHP脚本,我写了寻找一个POST参数“变种”,又呼应它来筛选,通过这个参数如下工作得很好:
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);
...
的问题当我试图做同样的调用API(但与PARAMS改为API PARAMS明显)我得到以下错误:
Authentication error: Unable to respond to any of these challenges: {}
我请求的页面是HTTPS页面,这会是问题?
但是,对API上的原始HTTP页面执行相同类型的POST请求会给出相同的错误,除非我将StringEntity部分注释掉然后运行(但是返回xml并且我想传递一个参数来请求数据在JSON中)。
这似乎是一个非常奇怪的问题(非HTTPS部分),但无法真正找到任何帮助这个问题,所以很抱歉,如果答案是在那里。
任何想法?
由于提前,
Infinitifzz
编辑:好的,我也无济于事,所以我想,如果我针对你可能一些启发的API,它是8Tracks API,正如你可以看到你需要为所有请求传递一个开发密钥(api_key),并且我坚持使用的是使用https登录用户:http://www.8tracks.com/sessions.xml“部分。
希望这有助于某种方式,因为我处于死路一条。
个谢谢,
Infinitifizz
应该不是你的网址开头是https作为一个开始。然后,如果它是https,则可能会通过证书或其他身份验证质询进行保护 - 如错误消息中所示。 – 2011-05-24 18:06:26
我只是把这个URL作为例子,但是它应该。但正如我所说,我试图HttpPost我自己的脚本,这是很好,如果我试图HttpPost一个非https部分的API作为在他们的示例调用一个HTTP页面不是HTTPS,我只有错误,如果我通过nameValuePair ,如果我没有,我没有得到认证错误。 – 2011-05-24 18:25:44
你能告诉我们你的HttpClient构造函数吗? – Ryan 2011-05-24 18:27:17