Пользовательский агент на 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();
}