그냥 구글에서 소스 코드를 긁어와서
제 개발자 키 발급 받은거 키값에 넣은 후
코드를 돌려보면.. 검색결과를 못받아 오는거 같습니다 정보를 전혀 얻어오질 못하네여 ..
바로 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);
}
}