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

이 구문에 무슨 문제가 있습니꺄?

0 추천
try {
   HttpClient client  = new DefaultHttpClient();
   HttpGet get = new HttpGet();
   get.setURI(new URI("http://www.google.com/"));
   HttpResponse resp = client.execute(get);
   BufferedReader br = new BufferedReader(new InputStreamReader(resp.getEntity().getContent()));
   String str = null;
   StringBuffer sb = new StringBuffer();
   while ((str = br.readLine()) != null) {
    sb.append(str).append("\n");
   }
   //TextView tv = (TextView) findViewById(R.id.set_title_layer);
   //tv.setText(sb.toString());
   Toast.makeText(SetActivity.this, sb.toString(), Toast.LENGTH_LONG).show();
   
  } catch (Exception e) {
   StringWriter sw = new StringWriter();
         e.printStackTrace(new PrintWriter(sw));
         String exceptionAsStrting = sw.toString();
           
   Toast.makeText(SetActivity.this, exceptionAsStrting, Toast.LENGTH_LONG).show();
  }

get 전송을 테스트하기 위해서

구글의 html 소스를 받아와서 Toast로 띄워주는걸 구현중인데요.

저걸 실행하면 catch 안쪽의 구문만 실행되네요.

사실 책에 나오는 소스 그대로 이고

<uses-permission android:name="android.permission.INTERNET" />

라든지

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.io.BufferedReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URI;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.UUID;
import java.util.List;
import java.net.URISyntaxException;

import android.os.Bundle;
import android.app.Activity;
import android.app.Dialog;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.telephony.TelephonyManager;
import android.view.*;
import android.view.View.OnClickListener;
import android.widget.*;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.client.ClientProtocolException;

이런거는 물론 다 줬습니다.

구문에 뭔가 문제가 있는겁니꺄?

개님의습성 (2,500 포인트) 님이 2013년 4월 15일 질문

2개의 답변

+1 추천
 
채택된 답변
catch문에 걸리셨다면 Exception 객체의 메시지를 올려주시면 더 정확한 답변이 달릴수 있을겁니다.

 

위 소스로 예상되는 것은 import구분에 스레드와 관련된 것이 없고 하고자하는 로직이 네트워크 관련인것으로 보아

메인스레드에서 네트워크관련 로직을 수행하다가 예외가 발생한 것으로 보입니다.

 

네트워크관련 로직은 따로 스레드를 만들어서 돌려주어야 합니다.

 

확실한 예외 내용은 Exception 메시지를 확인해야 알것 같네요.
이라슈 (8,770 포인트) 님이 2013년 4월 15일 답변
개님의습성님이 2013년 4월 16일 채택됨
0 추천

Exception 객체의 메세지는 아래와 같습니다.

개님의습성 (2,500 포인트) 님이 2013년 4월 15일 답변
예상하던 내용이 맞네요 메인스레드에서 네트워크 작업을 해서 발생하는 예외상황입니다.
AsyncTask 라던가 스레드를 이용해서 네트워크 작업을 하시면 됩니다.
답변 감사합니다.
AsyncTask의 개념을 아직 잘 모르지만, 구글링등을 통해서 알아보도록 하겠습니다.
...