我正在使用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));
还有什么可能导致问题,我该如何解决?
提前致谢
修改
我首先尝试使用
直接使用Urlnew 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),但我仍然得到相同的异常。
答案 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)
请尝试使用主题名称而不使用连字符“ - ”或下划线“_”,看看它是否有效。