簡體   English   中英

Java Android,HttpGet錯誤-主機名不能為null

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM