안드로이드 개발 질문/답변
(글 수 45,052)
안드로이드도 못하지만 자바는 더못해서...ㅎㅎㅎ
현재 소스에 에러는 없습니다.
에뮬에서나 핸드폰에서 잘 돌아가구요.
가끔 다른 핸드폰에서 URL받아와서 데이터 처리 하는데서 문제가 발생합니다..
<외부 url에서 이미지나 내용을 받아오는 openStream()은 해당 url에 내용이 존재하는데도 가끔 못받아오는 에러를 발생한다.>
이런 내용을 검색하다 찾았는데요..
inputStream 과 openStream ...어찌 고쳐야 어디서 어떤 핸드폰이든 URL을 읽어서 데이터를 처리할까요...
저녁도 못먹고 끙끙 대고 있습니다.ㅠㅠ
package kr.co.billion.oceaninfo.android.apis.util;
import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; import java.util.List;
import kr.co.billion.oceaninfo.android.apis.model.OceanData;
import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlPullParserFactory;
import android.util.Log;
public class XmlUtil {
private static final String LOG_TAG = "XmlUtil";
public static XmlPullParserFactory parserCreator;
public static XmlPullParser parser;
public static List<OceanData> oceanDataParse(String url) {
ArrayList<OceanData> oceandata = new ArrayList<OceanData>();
URL xmlUrl = null;
InputStream is = null;
int parserEvent = 0; String tag = "ready..!"; String salt = ""; String temp = ""; String name = ""; String lon = ""; String lat = "";
try {
parserCreator = XmlPullParserFactory.newInstance();
parser = parserCreator.newPullParser();
} catch (XmlPullParserException e) {
Log.d(LOG_TAG, e.getMessage());
}
try {
xmlUrl = new URL(url);
} catch (MalformedURLException e) {
Log.d(LOG_TAG, e.getMessage());
}
Log.d("log11 ====> ", "log11");
try {//외부 url에서 이미지나 내용을 받아오는 openStream()은 해당 url에 내용이 존재하는데도 가끔 못받아오는 에러를 발생한다.
is = xmlUrl.openStream();
} catch (IOException e) {
Log.d(LOG_TAG, e.getMessage());
}
Log.d("log22 ====> ", "log22");
try {
parser.setInput(is, "UTF-8");
parserEvent = parser.getEventType();
} catch (XmlPullParserException e) {
Log.d(LOG_TAG, e.getMessage());
}
while (parserEvent != XmlPullParser.END_DOCUMENT) {
switch (parserEvent) {
case XmlPullParser.START_DOCUMENT:
Log.d("parserTest", "Parser Start..!");
break;
case XmlPullParser.START_TAG:
tag = parser.getName();
if (tag.equals("item")) {
name = parser.getAttributeValue(null, "name");
salt = parser.getAttributeValue(null, "salt");
temp = parser.getAttributeValue(null, "temp");
lon = parser.getAttributeValue(null, "lon");
lat = parser.getAttributeValue(null, "lat");
}
break;
// case XmlPullParser.TEXT:
// if(tag.equals("item")) {
// name = parser.getText();
// }
// break;
case XmlPullParser.END_TAG:
if (tag.equals("item")) {
OceanData imsi = new OceanData(name, salt, temp, lon, lat);
oceandata.add(imsi);
}
tag = "nothing";
break;
}
try {
parserEvent = parser.next();
} catch (XmlPullParserException e) {
Log.d(LOG_TAG, e.getMessage());
} catch (IOException e) {
Log.d(LOG_TAG, e.getMessage());
}
}
return oceandata;
}
}
SMS 입니다.
2010.11.05 21:08:18
소스 일부분인가요?
저도 어플에서 인터넷에서 데이터 가져오는 부분이 있고, xml로 되어있는데, 실패 안나던데...
실제 소스가 어떻게 되어있는지..정확히 어느부분에서 어떤오류가 나는지 알면 좀더 도와드릴수있을텐데요.



