[英]Java Android , HttpGet error - Host name may not be null
我正在使用HttpGet來獲取某些圖像的內容。 它運行良好,但是現在我使用的新服務器給我錯誤,該服務器以以下形式返回圖像:
https://amx-sfs.qpass.com/d/da/207b3f6f-4fda-4faf-b7ae-a186530e1245
錯誤是主機名不能為空
我已經研究過,當URL上出現下划線時,錯誤似乎很常見,但是我的URL僅包含連字符,我認為該字符已被URI接受。 無論如何,我也嘗試使用以下命令來成功逃脫網址:
HttpGet mHttpGet = new HttpGet(new URI(null,item.getImageUrl(),null));
還有什么可能導致該問題,我該如何解決?
提前致謝
編輯
我首先嘗試使用
new HttpGet(item.getImageUrl())
然后我還嘗試了4個參數:
HttpGet mHttpGet = new HttpGet(new URI("https","amx-sfs.qpass.com",item.getImageUrl().substring(25),null));
以相同的結果,即使我調試HttpGet對象並觀察它具有的URI對象,host屬性也可以正常顯示(amx-sfs.qpass.com),但是我仍然會遇到相同的異常。
您是否編碼了URI? 例如刪除空格或其他破壞字符的特殊字符? 嘗試android.net.Uri.encode(String s)
HttpGet mHttpGet = new HttpGet(新URI(null,android.net.Uri.encode(item.getImageUrl()),null));
調試此錯誤的最佳方法是始終打印URL並分析給出錯誤的URL。
我認為您使用的是錯誤的構造函數。 URI構造函數的三個參數具有以下簽名:
public URI(String scheme, String ssp, String fragment)
但您提供的是網址作為第二個參數,而不是SSP。 我認為您應該使用一個以URL字符串作為參數的參數構造函數。
好吧,這沒有Java或Android問題,它導致服務器在來自設備的情況下更改了請求...
請嘗試使用不帶連字符“-”或下划線“ _”的主機名,看看它是否有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.