Al obtener una imagen de la URL de su java.net.UnknownHostException: Host no está resuelto en el dispositivo Android?
public class FetchImageAppsActivity extends Activity { /** Called when the activity is first created. */ public static String urlPath = "http://farm1.static.flickr.com/150/399390737_7a3d508730_b.jpg"; public ImageView imageView; boolean usingProxy=true; public String proxyIP="ABCD"; public int proxyPort=80; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); imageView =(ImageView) findViewById(R.id.imageViewFetch); if(usingProxy==true){ setProxy(); } try { fetch(urlPath); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } Drawable image = ImageOperations(this,urlPath,"overflow.png"); imageView.setImageDrawable(image); /* imageView.setMinimumWidth(); imageView.setMinimumHeight(height); imageView.setMaxWidth(width); imageView.setMaxHeight(height); */ } private Drawable ImageOperations(Context ctx, String url, String saveFilename) { try { InputStream is = (InputStream) ((FetchImageAppsActivity) ctx).fetch(url); //error line Drawable d = Drawable.createFromStream(is, "src"); return d; } catch (MalformedURLException e) { e.printStackTrace(); return null; } catch (IOException e) { e.printStackTrace(); return null; } } public Object fetch(String address) throws MalformedURLException,IOException { try{ URL url = new URL(address); URI uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef()); url = uri.toURL(); Log.i("Url:", url+""); Object content = url.getContent(); return content; }catch(Exception e){ e.printStackTrace(); } return null; } public void setProxy() { Uri uri = Uri.parse("http://farm1.static.flickr.com/150/399390737_7a3d508730_b.jpg"); Properties systemProperties = System.getProperties(); systemProperties.put( "proxySet", "true" ); systemProperties.setProperty("http.proxyHost",proxyIP); systemProperties.setProperty("http.proxyPort","80"); systemProperties.setProperty("http.nonProxyHosts",uri.getHost()); //uri.getHost() HttpHost PROXY_HOST=null; if( usingProxy == true) PROXY_HOST = new HttpHost(proxyIP, proxyPort); HttpClient client = null; File f = null; List<BasicNameValuePair> nameValuePairs = new ArrayList<BasicNameValuePair>(2); HttpParams params = new BasicHttpParams(); params.setParameter(ExecutionContext.HTTP_TARGET_HOST, PROXY_HOST); params.setBooleanParameter("http.protocol.expect-continue", false); ConnManagerParams.setMaxConnectionsPerRoute(params, new ConnPerRouteBean(1)); ConnManagerParams.setMaxTotalConnections(params, 1); HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); HttpProtocolParams.setUseExpectContinue(params, false); HttpProtocolParams.setContentCharset(params,HTTP.DEFAULT_CONTENT_CHARSET); HttpConnectionParams.setConnectionTimeout(params,50000); HttpConnectionParams.setSoTimeout(params, 10000); SchemeRegistry registry = new SchemeRegistry(); registry.register(new Scheme("https", PlainSocketFactory.getSocketFactory(),443)); //if (data != null && data.equals("data")) { registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(),proxyPort)); //uri.getPort() // } else { registry.register(new Scheme("https", PlainSocketFactory.getSocketFactory(), proxyPort)); // } ThreadSafeClientConnManager cm = new ThreadSafeClientConnManager(params, registry); client = new DefaultHttpClient(cm, params); //Proxy.NO_PROXY if(usingProxy == true) client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, PROXY_HOST); HttpContext ctx = new BasicHttpContext(); ctx.setAttribute(ExecutionContext.HTTP_TARGET_HOST, PROXY_HOST); try { HttpPost request = new HttpPost(); request.setParams(params); request.setURI(new URI(uri.toString())); request.setHeader("Content-Type","application/x-www-form-urlencoded"); }catch(Exception e){ System.out.println(e.getMessage()); } } }
Conseguí la excepción mientras que funcionaba en el emulador androide y mi máquina está conectada al ranurador WiFi permitido proxy como folllows
java.net.UnknownHostException: Host is unresolved: farm1.static.flickr.com:80
Registro de errores:
- Android ImageView obtiene una imagen escalada en la pantalla
- Android: animación mediante programación entre imágenes en el widget Galería
- Cambiar el tamaño de la imagen del archivo
- Android y Facebook: Cómo obtener la imagen del usuario registrado
- Android: ¿cómo hacer una imagen de mapa clicable con cada país produciendo una acción diferente?
09-05 13:44:48.817: WARN/System.err(489): java.net.UnknownHostException: Host is unresolved: farm1.static.flickr.com:80 09-05 13:44:48.839: WARN/System.err(489): at java.net.Socket.connect(Socket.java:1038) 09-05 13:44:48.847: WARN/System.err(489): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:62) 09-05 13:44:48.884: WARN/System.err(489): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionPool.get(HttpConnectionPool.java:88) 09-05 13:44:48.886: WARN/System.err(489): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getHTTPConnection(HttpURLConnectionImpl.java:927) 09-05 13:44:48.897: WARN/System.err(489): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:909) 09-05 13:44:48.937: WARN/System.err(489): at java.net.URLConnection.getContent(URLConnection.java:157) 09-05 13:44:48.937: WARN/System.err(489): at java.net.URL.getContent(URL.java:621) 09-05 13:44:48.967: WARN/System.err(489): at com.android.fetchimage.FetchImageAppsActivity.fetch(FetchImageAppsActivity.java:96) 09-05 13:44:48.967: WARN/System.err(489): at com.android.fetchimage.FetchImageAppsActivity.onCreate(FetchImageAppsActivity.java:62) 09-05 13:44:48.987: WARN/System.err(489): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 09-05 13:44:48.987: WARN/System.err(489): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 09-05 13:44:48.987: WARN/System.err(489): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 09-05 13:44:48.987: WARN/System.err(489): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 09-05 13:44:48.987: WARN/System.err(489): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 09-05 13:44:48.987: WARN/System.err(489): at android.os.Handler.dispatchMessage(Handler.java:99) 09-05 13:44:48.987: WARN/System.err(489): at android.os.Looper.loop(Looper.java:123) 09-05 13:44:48.987: WARN/System.err(489): at android.app.ActivityThread.main(ActivityThread.java:4627) 09-05 13:44:49.028: WARN/System.err(489): at java.lang.reflect.Method.invokeNative(Native Method) 09-05 13:44:49.028: WARN/System.err(489): at java.lang.reflect.Method.invoke(Method.java:521) 09-05 13:44:49.028: WARN/System.err(489): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 09-05 13:44:49.047: WARN/System.err(489): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 09-05 13:44:49.067: WARN/System.err(489): at dalvik.system.NativeStart.main(Native Method)
- ¿Es JPG realmente sólo aceptable para su uso en Android?
- Falta o imágenes incorrectas y fondos de forma aleatoria durante todo el ciclo de vida de la aplicación
- Android: Rotación de la imagen alrededor del centro
- (Java LibGDX) ¿Cómo puedo cambiar el tamaño de mis texturas en LibGDX?
- Facebook Compartir imagen Url junto con el enlace en android
- Añadir sombras en la parte inferior de la imagen
- Añadir marca de agua pequeña imagen a gran imagen opencv4android
- Androide. Obtener el tamaño de la imagen desde su id de recurso
Establecer el permiso de Android para Internet
en el archivo Manifest.xml
android.permission.INTERNET
Pruebe el mismo código sin establecer la propiedad systemProperties.setProperty("http.proxyPort","80");
.
Tengo la solución:
String url = "farm1.static.flickr.com/150/399390737_7a3d508730_b.jpg"; proxy = "yourProxyIP", port = "yourProxyPort"; URL server = new URL(url); Properties systemProperties = System.getProperties(); systemProperties.setProperty("http.proxyHost",proxy); systemProperties.setProperty("http.proxyPort",port); HttpURLConnection connection = (HttpURLConnection)server.openConnection(); connection.connect(); InputStream in = connection.getInputStream(); image = Drawable.createFromStream(in, "src"); imageView.setImageDrawable(image);
Para usar "https", use la autenticación SSL
- Elemento de ListView personalizado Disposición gráfica Android
- Cómo obtener un contexto de una actividad nativa