Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

While fetching an image from URL its showing java.net.UnknownHostException: Host is unresolved in android device?

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="A.B.C.D";
 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());
}
    }
    }

I got the exception while running in android emulator and my machine is connected to proxy enabled WiFi router as folllows

java.net.UnknownHostException: Host is unresolved: farm1.static.flickr.com:80

Error Log:

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)
like image 601
info Avatar asked Sep 05 '12 07:09

info


2 Answers

Set the android Permission for Internet in Manifest.xml file

android.permission.INTERNET

like image 149
Kumar Vivek Mitra Avatar answered Oct 16 '22 04:10

Kumar Vivek Mitra


Try the same code without setting the property systemProperties.setProperty("http.proxyPort","80");.

like image 34
Jaini Naveen Avatar answered Oct 16 '22 03:10

Jaini Naveen