1 package com.example.administrator.myapplication.activity;
2
3 import android.os.Bundle;
4 import android.os.Handler;
5 import android.os.Message;
6 import android.support.v7.app.AppCompatActivity;
7 import android.view.View;
8 import android.webkit.WebView;
9 import android.widget.Button;
10
11 import com.example.administrator.myapplication.R;
12
13 import java.io.IOException;
14 import java.io.InputStream;
15 import java.net.HttpURLConnection;
16 import java.net.MalformedURLException;
17 import java.net.URL;
18
19 public class HttpUrlConnectionGetActivity extends AppCompatActivity {
20 WebView webView;
21 Button httpUrlBtn;
22 @Override
23 protected void onCreate(Bundle savedInstanceState) {
24 super.onCreate(savedInstanceState);
25 setContentView(R.layout.activity_get);
26 webView = (WebView) findViewById(R.id.baidu);
27 httpUrlBtn = (Button) findViewById(R.id.HttpUrl);
28 httpUrlBtn.setOnClickListener(new View.OnClickListener() {
29 @Override
30 public void onClick(View v) {
31 /*Thread thread = new Thread(new Runnable() {
32 @Override
33 public void run() {
34 HttpURLConnectionGet();
35 }
36 });
37 thread.start();*/
38 //!!!网络请求HttpURLConnectionGet()要放在子线程中
39 new Thread(new Runnable() {
40 @Override
41 public void run() {
42 HttpURLConnectionGet();
43 }
44 }).start();
45 }
46 });
47 }
48 //get请求
49 private void HttpURLConnectionGet() {
50 HttpURLConnection httpURLConnection = null;
51 InputStream is = null;
52 //StringBuilder:线程非安全,可有多线程采用,速度比StingBuffer快,用法同StringBuffer
53 // StringBuffer:线程安全,只能单线程采用
54 StringBuilder sb = new StringBuilder();
55 try {
56 //准备请求的网络地址
57 URL url = new URL("http://apis.baidu.com/txapi/weixin/wxhot?num=10&page=1&word=%E7%9B%97%E5%A2%93%E7%AC%94%E8%AE%B0");
58 //调用openConnection得到网络连接,网络连接处于就绪状态
59 httpURLConnection = (HttpURLConnection) url.openConnection();
60 //设置网络连接超时时间5S
61 httpURLConnection.setConnectTimeout(5*1000);
62 //设置读取超时时间
63 httpURLConnection.setReadTimeout(5*1000);
64 httpURLConnection.setRequestProperty("apikey","58218dcc8845195b277082c3a357f481");
65 httpURLConnection.connect();
66 //if连接请求码成功
67 if (httpURLConnection.getResponseCode() == httpURLConnection.HTTP_OK){
68 is = httpURLConnection.getInputStream();
69 byte[] bytes = new byte[1024];
70 int i = 0;
71 while ((i = is.read(bytes)) != -1){
72 sb.append(new String(bytes,0,i,"utf-8"));
73 }
74 is.close();
75 }
76 } catch (MalformedURLException e) {
77 e.printStackTrace();
78 } catch (IOException e) {
79 e.printStackTrace();
80 }finally {
81 if (httpURLConnection != null){
82 httpURLConnection.disconnect();
83 }
84 }
85 //发送消息:what消息类型,obj消息内容
86 Message message = handler.obtainMessage(1,sb.toString());
87 handler.sendMessage(message);
88 }
89
90 //Handler:消息处理机制(发消息,处理消息),只能放在主线程中
91 Handler handler = new Handler(){
92 @Override
93 public void handleMessage(Message msg) {
94 super.handleMessage(msg);
95 if (msg != null && msg.what ==1){
96 String s = (String) msg.obj;
97 webView.getSettings().setDefaultTextEncodingName("utf-8");
98 webView.getSettings().setJavaScriptEnabled(true);
99 webView.loadDataWithBaseURL(null,s,"text/html","utf-8",null);
100 }
101 }
102 };
103 }
1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 xmlns:tools="http://schemas.android.com/tools"
4 android:layout_width="match_parent"
5 android:layout_height="match_parent"
6 android:orientation="vertical"
7 tools:context=".activity.HttpUrlConnectionGetActivity">
8
9 <WebView
10 android:id="@+id/baidu"
11 android:layout_width="match_parent"
12 android:layout_height="400dp" />
13
14 <Button
15 android:id="@+id/HttpUrl"
16 android:layout_width="match_parent"
17 android:layout_height="wrap_content"
18 android:text="HttpUrlConnection Get请求"
19 android:textAllCaps="false" />
20
21 </LinearLayout>