마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

jsoup 파싱에서 asyncTask 오류 질문

0 추천
package com.example.user.projects_team;

import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

import java.io.IOException;

public class FoodActivity extends AppCompatActivity {

    static TextView foodinfo;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_food);
        foodinfo = (TextView) findViewById(R.id.foodinfo);

        new T().execute(null, null, null);

    }
}

class T extends AsyncTask<Void, Void, Void> {
    String food;
    @Override
    protected Void doInBackground(Void... params) {
        try {
            Document document = Jsoup.connect("http://www.naver.com").get();
            Elements elements = document.select("div#dayBoxContent9_1");

            food = elements.text();

        }

        catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        super.onPostExecute(result);
        FoodActivity.foodinfo.setText(food);
    }
}

이런 코드를 작성했는데 계속 asynctask오류가 발생하더라고요. 초보라 그런지 왜 그런지는 잘 모르겠어서 질문드립니다.. 

인터넷 퍼미션도 제대로 썼는데 왜 그럴까요?

밑에는 로그캣입니다.

FATAL EXCEPTION: AsyncTask #1
                                                 Process: com.example.user.projects_team, PID: 8825
                                                 java.lang.RuntimeException: An error occured while executing doInBackground()
                                                     at android.os.AsyncTask$3.done(AsyncTask.java:300)
                                                     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
                                                     at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
                                                     at java.util.concurrent.FutureTask.run(FutureTask.java:242)
                                                     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
                                                     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
                                                     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
                                                     at java.lang.Thread.run(Thread.java:841)
                                                  Caused by: java.lang.SecurityException: Permission denied (missing INTERNET permission?)
                                                     at java.net.InetAddress.lookupHostByName(InetAddress.java:464)
                                                     at java.net.InetAddress.getAllByNameImpl(InetAddress.java:251)
                                                     at java.net.InetAddress.getAllByName(InetAddress.java:229)
                                                     at com.android.okhttp.internal.Dns$1.getAllByName(Dns.java:28)
                                                     at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:216)
                                                     at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:122)
                                                     at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:292)
                                                     at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255)
                                                     at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206)
                                                     at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345)
                                                     at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:89)
                                                     at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:563)
                                                     at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:540)
                                                     at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:227)
                                                     at org.jsoup.helper.HttpConnection.get(HttpConnection.java:216)
                                                     at com.example.user.projects_team.T.doInBackground(FoodActivity.java:34)
                                                     at com.example.user.projects_team.T.doInBackground(FoodActivity.java:29)
                                                     at android.os.AsyncTask$2.call(AsyncTask.java:288)
                                                     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
                                                     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
                                                     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
                                                     at java.lang.Thread.run(Thread.java:841) 
                                                  Caused by: libcore.io.GaiException: getaddrinfo failed: EAI_NODATA (No address associated with hostname)   

               

planete (140 포인트) 님이 2016년 10월 7일 질문
에러로그를 보면 권한 부분을 다시 체크해 보셔야 할 것 같은데요.  AndroidMenifest.xml 을 다시 잘 살펴보세요.
매니페스트 파일에서 철자 하나 틀린거 때문에 그런거였네요..... 으으... 이거 하나 발견 못해서 그 개고생을 하다니...
감사합니다!!

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...