我遇到了一個使用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