url.getContent()上的用户代理;

时间:2012-03-27 16:13:42

标签: android user-agent

我需要从连接到其他网址后从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;
    }

但是因为我没有发送用户代理,所以它没有给我任何东西。

2 个答案:

答案 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