안드로이드 학습(47) - Html 소스 뷰어
GET 요청 보내기
URL url = new URL(path);
//
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//
conn.setRequestMethod("GET");
conn.setConnectTimeout(5000);
conn.setReadTimeout(5000);
// ,
if(conn.getResponseCode() == 200){
}
서버에서 되돌아오는 흐름을 가져오고 흐름에서 html 원본을 읽습니다
문자열 스트링을 구축하기 때문에 new String(byte[])을 통해 구축할 수 있고 Byte Array Output Stream을 호출할 수 있습니다.toByteArray(), 스트림을 바이트 배열로 직접 변환
byte[] b = new byte[1024];
int len = 0;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
while((len = is.read(b)) != -1){
//
bos.write(b, 0, len);
}
//
// utf-8
text = new String(bos.toByteArray());
무분별한 처리
부호화의 출현은 서버와 클라이언트 코드표가 일치하지 않아 발생한 것이다
//
text = new String(bos.toByteArray(), "utf-8");
핵심 코드
public class MainActivity extends Activity {
Handler handler = new Handler(){
public void handleMessage(android.os.Message msg) {
TextView tv = (TextView) findViewById(R.id.tv);
tv.setText((String)msg.obj);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void click(View v){
Thread t = new Thread(){
@Override
public void run() {
String path = "http://192.168.1.103:8080/baidu.html";
try {
URL url = new URL(path);
// ,
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(5000);
conn.setReadTimeout(5000);
// ,
if(conn.getResponseCode() == 200){
// , html
InputStream is = conn.getInputStream();
//
String text = Utils.getTextFromStream(is);
// , ui,
Message msg = handler.obtainMessage();
msg.obj = text;
handler.sendMessage(msg);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
t.start();
}
}
흐름에서 문자열 가져오기
public class Utils {
public static String getTextFromStream(InputStream is){
byte[] b = new byte[1024];
int len = 0;
// , ,
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
while((len = is.read(b)) != -1){
bos.write(b, 0, len);
}
//
String text = new String(bos.toByteArray());
return text;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.