jjzjj

android - 从 URL 获取图像时显示 java.net.UnknownHostException : Host is unresolved in android device?

coder 2023-12-03 原文

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());
}
    }
    }

我在 android 模拟器中运行时遇到异常,我的机器连接到启用代理的 WiFi 路由器,如下所示

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

错误日志:

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)

最佳答案

Manifest.xml 文件中为 Internet 设置 android 权限

android.permission.INTERNET

关于android - 从 URL 获取图像时显示 java.net.UnknownHostException : Host is unresolved in android device?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12276914/

有关android - 从 URL 获取图像时显示 java.net.UnknownHostException : Host is unresolved in android device?的更多相关文章

  1. ruby-on-rails - Ruby net/ldap 模块中的内存泄漏 - 2

    作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代

  2. ruby - 如何模拟 Net::HTTP::Post? - 2

    是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou

  3. ruby-on-rails - rails : save file from URL and save it to Amazon S3 - 2

    从给定URL下载文件并立即将其上传到AmazonS3的更直接的方法是什么(+将有关文件的一些信息保存到数据库中,例如名称、大小等)?现在,我既不使用Paperclip,也不使用Carrierwave。谢谢 最佳答案 简单明了:require'open-uri'require's3'amazon=S3::Service.new(access_key_id:'KEY',secret_access_key:'KEY')bucket=amazon.buckets.find('image_storage')url='http://www.ex

  4. ruby - 如何使用 Ruby aws/s3 Gem 生成安全 URL 以从 s3 下载文件 - 2

    我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A

  5. java - 等价于 Java 中的 Ruby Hash - 2

    我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/

  6. ruby - 简单获取法拉第超时 - 2

    有没有办法在这个简单的get方法中添加超时选项?我正在使用法拉第3.3。Faraday.get(url)四处寻找,我只能先发起连接后应用超时选项,然后应用超时选项。或者有什么简单的方法?这就是我现在正在做的:conn=Faraday.newresponse=conn.getdo|req|req.urlurlreq.options.timeout=2#2secondsend 最佳答案 试试这个:conn=Faraday.newdo|conn|conn.options.timeout=20endresponse=conn.get(url

  7. ruby - 从 Ruby 中的主机名获取 IP 地址 - 2

    我有一个存储主机名的Ruby数组server_names。如果我打印出来,它看起来像这样:["hostname.abc.com","hostname2.abc.com","hostname3.abc.com"]相当标准。我想要做的是获取这些服务器的IP(可能将它们存储在另一个变量中)。看起来IPSocket类可以做到这一点,但我不确定如何使用IPSocket类遍历它。如果它只是尝试像这样打印出IP:server_names.eachdo|name|IPSocket::getaddress(name)pnameend它提示我没有提供服务器名称。这是语法问题还是我没有正确使用类?输出:ge

  8. ruby - 获取模块中定义的所有常量的值 - 2

    我想获取模块中定义的所有常量的值:moduleLettersA='apple'.freezeB='boy'.freezeendconstants给了我常量的名字:Letters.constants(false)#=>[:A,:B]如何获取它们的值的数组,即["apple","boy"]? 最佳答案 为了做到这一点,请使用mapLetters.constants(false).map&Letters.method(:const_get)这将返回["a","b"]第二种方式:Letters.constants(false).map{|c

  9. ruby-on-rails - Ruby url 到 html 链接转换 - 2

    我正在使用Rails构建一个简单的聊天应用程序。当用户输入url时,我希望将其输出为html链接(即“url”)。我想知道在Ruby中是否有任何库或众所周知的方法可以做到这一点。如果没有,我有一些不错的正则表达式示例代码可以使用... 最佳答案 查看auto_linkRails提供的辅助方法。这会将所有URL和电子邮件地址变成可点击的链接(htmlanchor标记)。这是文档中的代码示例。auto_link("Gotohttp://www.rubyonrails.organdsayhellotodavid@loudthinking.

  10. ruby-on-rails - 获取 inf-ruby 以使用 ruby​​ 版本管理器 (rvm) - 2

    我安装了ruby​​版本管理器,并将RVM安装的ruby​​实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby​​。有没有办法让emacs像shell一样尊重ruby​​的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el

随机推荐