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

파싱을 위해 url 여는데 오류 생깁니다

0 추천
	public void parse() {
		InputStream urlis = null;
		try {
			String gridx = String.valueOf(find.getX());
			String gridy = String.valueOf(find.getY());
			URL url = new URL(
					"http://www.kma.go.kr/wid/queryDFS.jsp?gridx="+gridx+"&gridy="+gridy);
			URLConnection conn = url.openConnection();
			urlis = conn.getInputStream();

			XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
			XmlPullParser parser = factory.newPullParser();

			parser.setInput(urlis, "UTF-8");

			parseWeather(parser);
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			Log.e("DEBUG: ", e.toString());
		} catch (XmlPullParserException e) {
			// TODO Auto-generated catch block
			Log.e("DEBUG: ", e.toString());
		} catch (IOException e) {
			// TODO Auto-generated catch block
			Log.e("DEBUG: ", e.toString());
		} finally {
			try {
				urlis.close(); // inputstream을 닫습니다.
			} catch (IOException e) {
				// TODO Auto-generated catch block
				Log.e("DEBUG: ", e.toString());
			}
		}
	}

여기서 conn.getInputStream() 하면 can't open file for reading 이라는 에러가 뜨면서 열리지 않네요..

그냥 url.openStream() 도 마찬가지구요.

Manifest 파일에 INTERNET 퍼미션도 넣어줬습니다.

왜 일까요..

익명사용자 님이 2014년 6월 8일 질문
gridx랑 gridy값에서 문제가 생기는 건 아닙니다 ㅠㅠ

2개의 답변

0 추천
 
채택된 답변
스레드는 돌리고 있나요?
YeonMin (17,860 포인트) 님이 2014년 6월 9일 답변
스레드 문제였습니다.
메인 액티비티에서는 바로 url 오픈을 할 수 없더군요.
감사합니다.
0 추천
URL 을

String url = Uri.encode(url);

 

이런 식으로 escape 해보시면 어떨까요.
PChitty (2,750 포인트) 님이 2014년 6월 8일 답변
조언을 받아 코드를 아래와 같이 바꾸어 보았는데

            String urlTemp = "http://www.kma.go.kr/wid/queryDFS.jsp?gridx="+gridx+"&gridy="+gridy;
            urlTemp = Uri.encode(urlTemp);
            URL url = new URL(urlTemp);
            URLConnection conn = url.openConnection();
            urlis = conn.getInputStream();

MalformedURLException이 뜨네요... 혹시 제가 잘못 이해한 것인지요 ?
private static final String ALLOWED_URI_CHARS = "@#&=*+-_.,:!?()/~'%";
String urlEncoded = Uri.encode(path, ALLOWED_URI_CHARS);

이거는요??
...