안드로이드 개발 질문/답변
(글 수 45,052)
try{
String _url="http://www.google.com/ig/api?hl=ko&weather=seoul";
URL url = new URL("_url);
XmlPullParserFactory parserCreator = XmlPullParserFactory.newInstance();
XmlPullParser parser = parserCreator.newPullParser();
parserCreator.setNamespaceAware(true);
parser.setInput(url.openStream(), "euc-kr");
int eventType = parser.getEventType();
while(eventType!=XmlPullParser.END_DOCUMENT){
switch(eventType){
case XmlPullParser.START_DOCUMENT:
break;
case XmlPullParser.END_DOCUMENT:
break;
case XmlPullParser.START_TAG:
if(parser.getName().equals("current_conditions")){
Log.i("-","current_conditions 조건문 ");
flag0=true;
}
if(flag0){
if(parser.getName().equals("condition")){
condition = parser.getAttributeValue(0);
Log.i("파싱","condition 탔음");
}
if(parser.getName().equals("temp_f")){//화씨
temp_f=parser.getAttributeValue(0);
flag2=true;
Log.i("파싱",flag2+"");
}
if(parser.getName().equals("temp_c")){//섭씨
temp_c=parser.getAttributeValue(0);
flag3=true; Log.i("파싱",flag3+"");
}
if(parser.getName().equals("humidity")){//습도
humidity=parser.getAttributeValue(0);
flag4=true;
Log.i("파싱",flag4+"");
}if(parser.getName().equals("icon")){//이미지
image_ad="http://www.google.com"+parser.getAttributeValue(0);
image=getImageBitmap(image_ad);
flag5=true;
}
if(parser.getName().equals("wind_condition")){//바람
wind_condition=parser.getAttributeValue(0);
flag6=true;
}
}
break;
case XmlPullParser.TEXT:
break;
case XmlPullParser.END_TAG:
if(parser.getName().equals("current_conditions")){
flag0=false;
}
break;
}
eventType=parser.next();
}위 코드로 구글 날씨 API를 이용해서 간단히 오늘의 날씨를 얻어오는 Activity를 생성 해봤는 데,
이게 이상하게도 될 때도 있고 안될때도 있습니다.
얻어올 땐 잘 얻어오고 못 얻어 올 땐 null을 반환 하는 데 제 코드가 잘못 된건가요 아니면 다른 설정이 잘못되어 있는건가요.?
Log도 걸어보고 디버깅도 해보았는데 xml 에서 'current_conditions'을 찾을때도 있고 못 찾을 때도 있습니다.
xml 구조는 아래와 같습니다.
<xml_api_reply version="1"><weather module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1" row="0" section="0"><forecast_information><city data="seoul"/><postal_code data="seoul"/><latitude_e6 data=""/><longitude_e6 data=""/><forecast_date data="2012-08-26"/><current_date_time data="1970-01-01 00:00:00 +0000"/><unit_system data="SI"/></forecast_information>
<current_conditions>
<condition data="대체로 흐림"/>
<temp_f data="88"/>
<temp_c data="31"/>
<humidity data="습도: 70%"/>
<icon data="/ig/images/weather/mostly_cloudy.gif"/>
<wind_condition data="바람: 북서풍, 14 km/h"/>
</current_conditions>
<forecast_conditions>
<day_of_week data="일"/>
<low data="21"/>
<high data="33"/>
<icon data="/ig/images/weather/chance_of_rain.gif"/>
<condition data="한때 비"/>
</forecast_conditions>조언 좀 주시면 감사하겠습니다.^^;
-추가내용-
위 xml 파일을 보면 text를 얻어오는 부분이 없는데 case XmlPullParser.TEXT:
조건에 로그를 찍어본 결과 출력되길래 parser.getText() 해보니깐
Unsupported API 라고 출력됩니다. 혹시 구글 날씨 API를 사용하시는 분들 중 저와 같은 경우를
겪으신 분이 있으신가요 ~? 계속 파싱되지 않는게 아니고 파싱유무가 랜덤하게 결정됩니다.




저도 마찬가지네요. 오전에 잘됐는데, 오후에도 돼다 말다를 반복하다가
Unsupported API 라고 나오네요.
너무 많이 접속해서 일시적으로 막은것인지, 아예 공개를 안하는것인지 모르겠네요ㅠㅠ
앱 내려야 대게 생겼네여..