日报2015/11/26(第一行代码读书笔记)
来源:互联网 发布:湖南有色金属行情软件 编辑:程序博客网 时间:2024/06/11 07:33
使用HttpURLConnection访问百度首页
package com.jackie.networktest;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;public class MainActivity extends AppCompatActivity { private Button btnSend; private TextView tvResponse; //用于收发消息进行UI更新 private Handler handler = new Handler() { /** * 在主线程更新TextView中的内容 * @param msg */ @Override public void handleMessage(Message msg) { if (msg.what == 1) { String response = ((StringBuilder) msg.obj).toString(); tvResponse.setText(response); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnSend = (Button) findViewById(R.id.btnSend); tvResponse = (TextView) findViewById(R.id.tvResponse); btnSend.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //访问网络是耗时操作,开辟子线程 new Thread(new Runnable() { @Override public void run() { HttpURLConnection httpURLConnection = null; try { URL url = new URL("http://www.baidu.com"); //向百度服务器发起Http请求 httpURLConnection = (HttpURLConnection) url.openConnection(); httpURLConnection.setRequestMethod("GET"); httpURLConnection.setConnectTimeout(8000); httpURLConnection.setReadTimeout(8000); //获得服务器返回的字节流 InputStream is = httpURLConnection.getInputStream(); //包装成输入流 InputStreamReader isr = new InputStreamReader(is); //包装成缓冲流 BufferedReader br = new BufferedReader(isr); //使用StringBuilder来保存字符 StringBuilder sb = new StringBuilder(); String line; while ((line = br.readLine()) != null) { sb.append(line); } Message message = new Message(); message.what = 1; message.obj = sb; //通知handler,封装返回的数据 handler.sendMessage(message); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { //关闭连接 if (httpURLConnection != null) { httpURLConnection.disconnect(); } } } }).start(); } }); }}
这里返回的是最原始的HTML代码片。
使用HttpClient访问百度首页
这个方法现在实际上已经过时了,因为这个类是Apache提供的,
sdk6.0以后取消了HttpClient,设置android SDK的编译版本为23时,且使用了httpClient相关类的库项目,会出现有一些类找不到的错误。
解决方法有两种:
1.在相应的module下的build.gradle useLibrary 'org.apache.http.legacy'
这句一定要加在 android{ } 当中。
如:
android { useLibrary 'org.apache.http.legacy'}
2.将在相应的module下的build.gradle中修改compileSdkVersion的值,设置为更小的sdk版本
将上面的代码改为
HttpClient httpClient = new DefaultHttpClient(); HttpGet httpGet = new HttpGet("http://www.baidu.com"); try { HttpResponse httpResponse = httpClient.execute(httpGet); HttpEntity httpEntity = httpResponse.getEntity(); String entity = EntityUtils.toString(httpEntity, "utf-8"); Message message = new Message(); message.what = 1; message.obj = entity; handler.sendMessage(message);
返回的是同样的页面
0 0
- 日报2015/11/26(第一行代码读书笔记)
- 日报2015/11/11(第一行代码读书笔记)
- 日报2015/11/12(第一行代码读书笔记)
- 日报2015/11/10(第一行代码读书笔记)
- 日报2015/11/17(第一行代码读书笔记)
- 日报2015/11/23(第一行代码读书笔记)
- 日报2015/11/24(第一行代码读书笔记)
- 日报2015/10/19(第一行代码读书笔记)
- 《第一行代码》读书笔记
- 第一行代码读书笔记
- 《第一行代码》读书笔记
- 《第一行代码Android》读书笔记
- 第一行代码 读书笔记 2
- Android第一行代码读书笔记
- 第一行代码读书笔记1
- 第一行代码读书笔记2
- 《第一行代码Android》---读书笔记
- 第一行代码 读书笔记 第1章
- [代码篇] 窗体倒计时
- spring bean单例模式改成原型模式
- php正则表达式速查手册
- Android setCompoundDrawablesWithIntrinsicBounds手工设置文本与图片相对位置说明
- codeforces148e
- 日报2015/11/26(第一行代码读书笔记)
- zoj 2770 Burn the Linked Camp
- 关于DragonBoard 410c的串口转usb连接
- 数据结构 — 图 之 关键路径、关键活动 (文字表述)
- 关于/dev/shm的文章
- HTML常见的实体字符
- 用Java语言打印一个倒立的等腰三角形———2015.11.26
- 数论 毕达哥斯拉三元组 + 欧拉函数 + 容斥原理 hdu3939
- android 自定义标题栏和自定义下拉选项PopupWindow