使用HttpURLConnection获取网页数据

一、布局:
<Button
android:layout_width="100dp"
android:layout_height="wrap_content"
android:id="@+id/get"
android:text="获取数据"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/get"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/text"
        android:layout_below="@+id/get"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />
</ScrollView>

二、在主线程中
public class MainActivity extends AppCompatActivity {
private TextView textView;
private String path;
private Handler handler;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    textView = (TextView) findViewById(R.id.text);
    path = "http://www.baidu.com";
    Button get = (Button) findViewById(R.id.get);
    get.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            getHttpurlConnection();
            handler = new Handler() {//更新主线程UI
                @Override
                public void handleMessage(Message msg) {
                    if(msg.what == 1) {
                        textView.setText(msg.obj.toString());
                    }
                }
            };
        }
    });
}

三、子线程中
private void getHttpurlConnection() {
new Thread(new Runnable() {//创建线程
@Override
public void run() {
try {
URL url = new URL(path);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();//与百度首页链接
connection.setRequestMethod("GET");
connection.setConnectTimeout(200);
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));获取百度首页源代码并封装成BufferedReader
String s1;
StringBuilder s =new StringBuilder();//使用StringBuilder可以拼接获取的字符
while ((s1 = br.readLine()) != null) {
Message msg = new Message();
msg.what = 1;
s.append(s1);
msg.obj=s;
handler.sendMessage(msg);//发送msg给主线程
}
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,806评论 18 399
  • 一、WebView view=(WebView) findViewById(R.id.webView1); vie...
    在你左右2018阅读 546评论 0 0
  • 这两天一直想学习android网络请求方面的知识,于是仔细看了《第一行代码》有关于网络请求这一章,主要看了如何网络...
    黑娃123阅读 8,191评论 0 2
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,149评论 0 62
  • 我听见了你的呐喊 一整晚 断翅的蝉 是在呼唤爱情吧 可它早已随着断落的翅膀 丢失在风雨里 不过 你的歌声却铿锵有力...
    谢行阅读 611评论 0 7