Пользовательский агент на url.getContent (); - PullRequest
0 голосов
/ 27 марта 2012

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

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

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

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

После этого я пытаюсь загрузить файл в рисованную переменную и делаю это:

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 ]

2 голосов
/ 29 марта 2012

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

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();
}
0 голосов
/ 27 марта 2012

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

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

...