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

네이버검색API 질문드립니다 도와주세요

0 추천

그냥 구글에서 소스 코드를 긁어와서

제 개발자 키 발급 받은거 키값에 넣은 후

코드를 돌려보면.. 검색결과를 못받아 오는거 같습니다 정보를 전혀 얻어오질 못하네여 ..

바로 try, catch로 하는데 바로 catch부분으로 가서 에러 메세지가 출력됩니다..

이런 경우 보통 어떤부분이 잘못된건가요?

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView status = (TextView)findViewById(R.id.text1);
        TextView status1 = (TextView)findViewById(R.id.text2); //파싱된 결과를 보자
        TextView status2 = (TextView)findViewById(R.id.text3);

        boolean inItem = false, inTitle = false, inAddress = false, inMapx = false, inMapy = false;

        String title = null, address = null, mapx = null, mapy = null;
        String query = "%EA%B0%88%EB%B9%84%EC%A7%91"; //이부부은 검색어를 UTF-8로 넣어줄거임.
        System.out.println(query);
        URL url = null;
        try {
           url = new URL("http://openapi.naver.com/search?"
                    + "key=1b68150f1331dff367e68424786dd093"
                    + "&query=" + URLEncoder.encode("starbucks", "utf-8") //여기는 쿼리를 넣으세요(검색어)
                    + "&target=local&start=1&display=4");

          final XmlPullParserFactory parserCreator = XmlPullParserFactory.newInstance();
          final XmlPullParser parser = parserCreator.newPullParser();

            parser.setInput(url.openStream(), null);

            status.setText("파싱 중이에요..");

            int parserEvent = parser.getEventType();

            while (parserEvent != XmlPullParser.END_DOCUMENT){
                switch(parserEvent){
                    case XmlPullParser.START_TAG:  //parser가 시작 태그를 만나면 실행
                        if(parser.getName().equals("item")){
                            inItem = true;
                        }
                        if(parser.getName().equals("title")){ //title 만나면 내용을 받을수 있게 하자
                            inTitle = true;
                        }
                        if(parser.getName().equals("address")){ //address 만나면 내용을 받을수 있게 하자
                            inAddress = true;
                        }
                        if(parser.getName().equals("mapx")){ //mapx 만나면 내용을 받을수 있게 하자
                            inMapx = true;
                        }
                        if(parser.getName().equals("mapy")){ //mapy 만나면 내용을 받을수 있게 하자
                            inMapy = true;
                        }
                        if(parser.getName().equals("message")){ //message 태그를 만나면 에러 출력
                            status1.setText(status1.getText()+"에러");
                            //여기에 에러코드에 따라 다른 메세지를 출력하도록 할 수 있다.
                        }
                        break;

                    case XmlPullParser.TEXT://parser가 내용에 접근했을때
                        if(inTitle){ //isTitle이 true일 때 태그의 내용을 저장.
                            title = parser.getText();
                            inTitle = false;
                        }
                        if(inAddress){ //isAddress이 true일 때 태그의 내용을 저장.
                            address = parser.getText();
                            inAddress = false;
                        }
                        if(inMapx){ //isMapx이 true일 때 태그의 내용을 저장.
                            mapx = parser.getText();
                            inMapx = false;
                        }
                        if(inMapy){ //isMapy이 true일 때 태그의 내용을 저장.
                            mapy = parser.getText();
                            inMapy = false;
                        }
                        break;
                    case XmlPullParser.END_TAG:
                        if(parser.getName().equals("item")){
                            status1.setText(status1.getText()+"상호 : "+ title +"\n주소 : "+ address +"\n좌표 : " + mapx + ", " + mapy+"\n\n");
                            inItem = false;
                        }
                        break;
                }
                parserEvent = parser.next();
            }
            status2.setText("파싱 끝!");
        } catch(Exception e){
            status1.setText("에러가..났습니다...");
        }
    }

    @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, 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);
    }
}
익명사용자 님이 2015년 10월 30일 질문

2개의 답변

0 추천
에러로그도 없고 xml 전문도 없어서 무슨 문제인지는 모르겠지만

아마 xml 파싱중 오류가 발생되지 않았을까 생각되네요
중견수 (5,600 포인트) 님이 2015년 10월 30일 답변
0 추천
브레이크 포인트 걸어두고
디버깅 모드로 실행해서 한줄씩 넘기면서 실행하보면서
어디서 익셉션이 발생하는지 찾아보세요
얼룩돼지 (15,720 포인트) 님이 2015년 10월 30일 답변
parser.setInput(url.openStream(), null);

이부분에서 오류가 나는데.. 어떻게 해야될까요..ㅜ
발생한 오류 로그를 보여주세요.
...