공공API를 가져와서 버스노선 ID를 조회하는 예제를 하고 있는데요
공공API 승인받고 인증키도 제대로 입력했는데
unexpected token (position : TEXT 다운로드 실패@1.8 in java.io.StringReader@421eaefo)
이런 에러가 앱을 실행한 화면에 뜹니다. 자바스크립트로 오류가 뜨는게 아니라 그냥 메인 화면에 저렇게 떠요!!!
자바파일에 문제가 있는 것 같아 소스 복사해놓겠습니다.
package com.example.asus.busrouteid;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.os.AsyncTask;
import android.widget.TextView;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
public class MainActivity extends AppCompatActivity {
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView)findViewById(R.id.date);
String serviceUrl = "http://ws.bus.go,kr/api/rest/busRouteInfo/getBusRouteList";
String serviceKey = "vgP8Op.....%3D";
String strSrch = "406";
String strUrl = serviceUrl+"?ServiceKey="+serviceKey+
"&strSrch="+strSrch;
new DownloadWebpageTask().execute(strUrl);
}
private class DownloadWebpageTask extends AsyncTask<String, Void, String>{
@Override
protected String doInBackground(String...urls){
try{
return(String)downloadUrl((String)urls[0]);
} catch (IOException e) {
return "다운로드 실패";
}
}
protected void onPostExecute(String result){
try {
XmlPullParserFactory factory =
XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
xpp.setInput(new StringReader(result));
int eventType = xpp.getEventType();
String headerCd = "";
String busRouteId = "";
String busRouteNm = "";
boolean bSet_headerCd = false;
boolean bSet_busRouteId = false;
boolean bSet_busRouteNm = false;
while (eventType != XmlPullParser.END_DOCUMENT){
if(eventType == XmlPullParser.START_DOCUMENT){
;
} else if(eventType == XmlPullParser.START_TAG){
String tag_name = xpp.getName();
if (tag_name.equals("headerCd"))
bSet_headerCd = true;
if (tag_name.equals("busRouteId"))
bSet_busRouteId = true;
if (tag_name.equals("busRouteNm"))
bSet_busRouteNm = true;
}else if (eventType == XmlPullParser.TEXT){
if (bSet_headerCd){
headerCd = xpp.getText();
tv.append("headerCd:" + headerCd + "\n");
bSet_headerCd = false;
}
if (headerCd.equals("0")){
if (bSet_busRouteId){
busRouteId = xpp.getText();
tv.append("busRouteId:" + busRouteId + "\n");
bSet_busRouteId = false;
}
if (bSet_busRouteNm){
busRouteNm = xpp.getText();
tv.append("busRouteNm:" + busRouteNm + "\n");
bSet_busRouteNm = false;
}
}
} else if (eventType == XmlPullParser.END_TAG){
;
}
eventType = xpp.next();
}
}catch (Exception e){
tv.setText(e.getMessage());
}
}
private String downloadUrl(String myurl) throws IOException{
HttpURLConnection conn = null;
try{
URL url = new URL(myurl);
conn =(HttpURLConnection) url.openConnection();
BufferedInputStream buf = new BufferedInputStream(
conn.getInputStream());
BufferedReader bufreader = new BufferedReader(
new InputStreamReader(buf, "utf-8"));
String line = null;
String page = "";
while ((line = bufreader.readLine()) != null){
page += line;
}
return page;
} finally {
conn.disconnect();
}
}
}
}