Java Android,HttpGet错误 - 主机名可能不为null

时间:2012-05-11 15:46:05

标签: java android uri host http-get

我正在使用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));

还有什么可能导致问题,我该如何解决?

提前致谢

修改

我首先尝试使用

直接使用Url
new HttpGet(item.getImageUrl())

然后我也尝试了4个args:

HttpGet mHttpGet = new HttpGet(new URI("https","amx-sfs.qpass.com",item.getImageUrl().substring(25),null));

使用相同的结果,即使我调试HttpGet对象,并观察它拥有的URI对象,主机属性也显示正常(amx-sfs.qpass.com),但我仍然得到相同的异常。

4 个答案:

答案 0 :(得分:0)

您是否编码了URI?例如,删除空格或其他破坏内容的特殊字符? 试试android.net.Uri.encode(String s)

HttpGet mHttpGet = new HttpGet(new URI(null,android.net.Uri.encode(item.getImageUrl()),null));

调试此方法的最佳方法是始终打印URL并分析出现错误的URL。

答案 1 :(得分:0)

我认为你使用的是错误的构造函数。三个参数URI构造函数具有以下签名:

public URI(String scheme, String ssp, String fragment)

但是您提供的URL是第二个参数而不是SSP。我认为你应该使用一个以URL字符串作为参数的参数构造函数。

答案 2 :(得分:0)

没有Java或Android问题,导致服务器在来自设备时更改请求...

答案 3 :(得分:-1)

请尝试使用主题名称而不使用连字符“ - ”或下划线“_”,看看它是否有效。