Пользовательский агент на url.getContent();

Мне нужно скачать один файл из URL, который я даю из XML после подключения к другому URL. Моя проблема в том, что мне нужен один и тот же пользовательский агент и ip для выполнения обоих действий.

Чтобы получить xml, я использую код PHP, который размещен на моем сервере, и отправляю его агенту моего приложения:

String ua=new WebView(ct).getSettings().getUserAgentString().trim();
ua = ua.replaceAll(" ", "%20");

Затем я анализирую xml с помощью общего RssParserSax, который дает мне все, что мне нужно.

После этого я пытаюсь загрузить файл в 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 ответа

Решение

Вы можете использовать AndroidHttpClient.newInstance(useragent).

Смотрите пример здесь AndroidHttpClient не может получить getEntity(). GetContent() после закрытия

Наконец я сделал это, чтобы решить:

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();
}
Другие вопросы по тегам