我需要从连接到其他网址后从xml提供的网址下载一个文件。我的问题是我需要相同的用户代理和ip来执行这两个操作。
要获取xml,我使用托管在我的服务器上的PHP代码,并将其发送给我的应用程序的用户代理:
String ua=new WebView(ct).getSettings().getUserAgentString().trim();
ua = ua.replaceAll(" ", "%20");
然后我用一个通用的RssParserSax解析xml,它给了我所需要的一切。
之后,我尝试将文件下载到drawable var中,然后执行此操作:
Drawable dd = ImageOperations(url);
private Drawable ImageOperations(String url) {
try {
InputStream is = (InputStream) this.fetch(url);
Drawable d = Drawable.createFromStream(is, "src");
return d;
} catch (MalformedURLException e) {
return null;
} catch (IOException e) {
return null;
}
}
private Object fetch(String address) throws MalformedURLException,IOException {
URL url = new URL(address);
Object content = url.getContent();
return content;
}
但是因为我没有发送用户代理,所以它没有给我任何东西。
答案 0 :(得分:2)
最后我这样解决了:
Bitmap bmImg;
try {
URL url = new URL(addres);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.addRequestProperty("User-Agent", ua);
conn.setDoInput(true);
conn.connect();
InputStream is = conn.getInputStream();
bmImg = BitmapFactory.decodeStream(is);
imagen.setImageBitmap(bmImg);
imagen.setScaleType(ScaleType.FIT_XY);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
答案 1 :(得分:0)
您可以使用AndroidHttpClient.newInstance(useragent)。
在此处查看示例AndroidHttpClient can not getEntity().getContent() after closed