我的Android应用程序中一直有IOException

时间:2015-09-18 07:25:54

标签: java android httpurlconnection ioexception

我在我的Android应用程序中获得了IOException,但我找不到为什么会发生此异常。我正在尝试连接到博客,稍后将解析JASON.StackTrace显示它无法解析URL,但是当我在浏览器中打开URL时它工作正常。我得到 java.net.unknownhostexception无法解析主机错误

以下是代码:

package blogreader.com.example.android.blogreader;

import android.app.ListActivity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class MainListActivity extends ListActivity {
    protected String[] mAndroidNames;
    public static final int NUMBER_OF_POSTS=20;
    public static final String TAG=MainListActivity.class.getSimpleName();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main_list);
        GetBlogPostClass getBlogPostClass=new GetBlogPostClass();
        getBlogPostClass.execute();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main_list, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
    private class GetBlogPostClass extends AsyncTask<Object,Void,String>{

        @Override
        protected String doInBackground(Object... arg0) {
            int responseCode=-1;
            try {
                URL blogFeedUrl = new URL("http://blog.teamtreehouse.com/api/get_recent_summary/?count=" + NUMBER_OF_POSTS);
                HttpURLConnection connection =(HttpURLConnection) blogFeedUrl.openConnection();
                connection.connect();
                responseCode =connection.getResponseCode();
                Log.i(TAG, "Code" + responseCode);

            }
            catch (MalformedURLException e)
            {
                Log.e(TAG,"MalformedException Caught",e);
            }
            catch (IOException e)
            {
                Log.e(TAG,"IOException Caught",e);
            }
            catch (Exception e)
            {
                Log.e(TAG,"Exception Caught",e);
            }

            return "Code:"+responseCode;
        }
    }
}

这是Logcat:

09-18 12:52:50.609    1848-1848/blogreader.com.example.android.blogreader I/art﹕ Not late-enabling -Xcheck:jni (already on)
09-18 12:52:51.335    1848-1855/blogreader.com.example.android.blogreader W/art﹕ Suspending all threads took: 161.519ms
09-18 12:52:51.367    1848-1872/blogreader.com.example.android.blogreader D/OpenGLRenderer﹕ Render dirty regions requested: true
09-18 12:52:51.368    1848-1848/blogreader.com.example.android.blogreader D/﹕ HostConnection::get() New Host Connection established 0xae1d4d40, tid 1848
09-18 12:52:51.381    1848-1848/blogreader.com.example.android.blogreader D/Atlas﹕ Validating map...
09-18 12:52:51.481    1848-1872/blogreader.com.example.android.blogreader D/﹕ HostConnection::get() New Host Connection established 0xa6c3f080, tid 1872
09-18 12:52:51.762    1848-1872/blogreader.com.example.android.blogreader I/OpenGLRenderer﹕ Initialized EGL, version 1.4
09-18 12:52:51.785    1848-1855/blogreader.com.example.android.blogreader W/art﹕ Suspending all threads took: 178.024ms
09-18 12:52:51.805    1848-1872/blogreader.com.example.android.blogreader D/OpenGLRenderer﹕ Enabling debug mode 0
09-18 12:52:51.851    1848-1872/blogreader.com.example.android.blogreader W/EGL_emulation﹕ eglSurfaceAttrib not implemented
09-18 12:52:51.851    1848-1872/blogreader.com.example.android.blogreader W/OpenGLRenderer﹕ Failed to set EGL_SWAP_BEHAVIOR on surface 0xa6c420a0, error=EGL_SUCCESS
09-18 12:52:51.930    1848-1871/blogreader.com.example.android.blogreader E/MainListActivity﹕ IOException Caught
09-18 12:52:53.747    1848-1855/blogreader.com.example.android.blogreader W/art﹕ Suspending all threads took: 27.251ms
09-18 12:53:25.143    1848-1872/blogreader.com.example.android.blogreader W/EGL_emulation﹕ eglSurfaceAttrib not implemented
09-18 12:53:25.143    1848-1872/blogreader.com.example.android.blogreader W/OpenGLRenderer﹕ Failed to set EGL_SWAP_BEHAVIOR on surface 0xa6c420a0, error=EGL_SUCCESS
09-18 12:53:25.902    1848-2045/blogreader.com.example.android.blogreader E/MainListActivity﹕ IOException Caught

堆栈跟踪:

09-18 14:04:48.483    1852-2058/blogreader.com.example.android.blogreader W/System.err﹕ java.net.UnknownHostException: Unable to resolve host "blog.teamtreehouse.com": No address associated with hostname
09-18 14:04:48.484    1852-2058/blogreader.com.example.android.blogreader W/System.err﹕ at java.net.InetAddress.lookupHostByName(InetAddress.java:457)
09-18 14:04:48.484    1852-2058/blogreader.com.example.android.blogreader W/System.err﹕ at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252)
09-18 14:04:48.484    1852-2058/blogreader.com.example.android.blogreader W/System.err﹕ at java.net.InetAddress.getAllByName(InetAddress.java:215)
09-18 14:04:48.484    1852-2058/blogreader.com.example.android.blogreader W/System.err﹕ at com.android.okhttp.HostResolver$1.getAllByName(HostResolver.java:29)
09-18 14:04:48.484    1852-2058/blogreader.com.example.android.blogreader W/System.err﹕ at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:232)
09-18 14:04:48.484    1852-2058/blogreader.com.example.android.blogreader W/System.err﹕ at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:124)
09-18 14:04:48.484    1852-2058/blogreader.com.example.android.blogreader W/System.err﹕ at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:272)
09-18 14:04:48.484    1852-2058/blogreader.com.example.android.blogreader W/System.err﹕ at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:211)
09-18 14:04:48.484    1852-2058/blogreader.com.example.android.blogreader W/System.err﹕ at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:373)
09-18 14:04:48.484    1852-2058/blogreader.com.example.android.blogreader W/System.err﹕ at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:106)
09-18 14:04:48.484    1852-2058/blogreader.com.example.android.blogreader W/System.err﹕ at blogreader.com.example.android.blogreader.MainListActivity$GetBlogPostClass.doInBackground(MainListActivity.java:60)
09-18 14:04:48.484    1852-2058/blogreader.com.example.android.blogreader W/System.err﹕ at blogreader.com.example.android.blogreader.MainListActivity$GetBlogPostClass.doInBackground(MainListActivity.java:51)
09-18 14:04:48.484    1852-2058/blogreader.com.example.android.blogreader W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:288)
09-18 14:04:48.484    1852-2058/blogreader.com.example.android.blogreader W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:237)
09-18 14:04:48.484    1852-2058/blogreader.com.example.android.blogreader W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
09-18 14:04:48.484    1852-2058/blogreader.com.example.android.blogreader W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
09-18 14:04:48.484    1852-2058/blogreader.com.example.android.blogreader W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
09-18 14:04:48.484    1852-2058/blogreader.com.example.android.blogreader W/System.err﹕ at java.lang.Thread.run(Thread.java:818)
09-18 14:04:48.485    1852-2058/blogreader.com.example.android.blogreader W/System.err﹕ Caused by: android.system.GaiException: android_getaddrinfo failed: EAI_NODATA (No address associated with hostname)
09-18 14:04:48.485    1852-2058/blogreader.com.example.android.blogreader W/System.err﹕ at libcore.io.Posix.android_getaddrinfo(Native Method)
09-18 14:04:48.485    1852-2058/blogreader.com.example.android.blogreader W/System.err﹕ at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:55)
09-18 14:04:48.485    1852-2058/blogreader.com.example.android.blogreader W/System.err﹕ at java.net.InetAddress.lookupHostByName(InetAddress.java:438)
09-18 14:04:48.485    1852-2058/blogreader.com.example.android.blogreader W/System.err﹕ ... 17 more
09-18 14:04:51.815    1852-1859/blogreader.com.example.android.blogreader W/art﹕ Suspending all threads took: 21.107ms
09-18 14:06:29.117    1852-1859/blogreader.com.example.android.blogreader W/art﹕ Suspending all threads took: 11.632ms
09-18 14:12:30.127    1852-1859/blogreader.com.example.android.blogreader W/art﹕ Suspending all threads took: 11.489ms

2 个答案:

答案 0 :(得分:2)

也许是以下的重复 - Unable to resolve host "<insert URL here>" No address associated with hostname

如果您已获得必要的许可,请检查您的舱单。

答案 1 :(得分:-1)

尝试使用以下代码通过HttpUrlconnection类发送http请求

    String url = "http://blog.teamtreehouse.com/api/get_recent_summary/?count=" + NUMBER_OF_POSTS;

    URL obj = new URL(url);
    HttpURLConnection con = (HttpURLConnection) obj.openConnection();

    // optional default is GET
    con.setRequestMethod("GET");

    //add request header
    con.setRequestProperty("User-Agent", USER_AGENT);

    int responseCode = con.getResponseCode();
    System.out.println("Response Code : " + responseCode);