使用HTTP协议访问网络
2015-10-03 00:09
543 查看
Android本身提供的WebView已经将发送HTTP请求,接收服务响应,解返回数据,以及最终的页面展示这些工作都封装好。提供了现成的方法供我们调用。
使用HTTP协议发送请求有两种方式可以使用:
1.HttpURLConnection(recommended)
代码
也还是用Handler作为内部类那一套东西,在Handler所在的UI线程里面进行UI更新操作。在Activity的方法里起一个new Thread,在里面发送HttpURLConnection。
注意java io流的学习,InputStream 和BufferedReader配合使用。StringBuilder.toString方法的使用。
这两天还学习了关于String在常量池和堆内存的存储知识,非常好。
2.HttpClient(deprecated in Android 6.0)
目前,android studio直接不认HttpClient这个类了,Google在6.0里面开始推荐使用HTtpURLConnection这个类,说这个类效率更高。
就这样。
HttpClient的使用:
还是直接上代码实在一些
代码直接来自郭神的第一行代码,谢郭神。
3.关于OkHttp这个开源库的使用,必须总结。
使用HTTP协议发送请求有两种方式可以使用:
1.HttpURLConnection(recommended)
代码
也还是用Handler作为内部类那一套东西,在Handler所在的UI线程里面进行UI更新操作。在Activity的方法里起一个new Thread,在里面发送HttpURLConnection。
package harris.com.network_httpurlconnection; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.widget.TextView; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class MainActivity extends Activity { // private Button getResponse; private TextView textShow; protected void onCreate(Bundle savedInstanceState) { //getResponse = (Button) findViewById(R.id.getResponse); textShow = (TextView) findViewById(R.id.text); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); sendRequestViaHttpURLConnection(); } private Handler handler = new Handler(){ public void handleMessage(Message msg) { String str = (String) msg.obj; /*下面这段话报空指针错误,然而我打印出str发现不是空的啊,真是哔了狗了*/ textShow.setText(str); } }; private void sendRequestViaHttpURLConnection( ) { new Thread(new Runnable() { public void run() { HttpURLConnection connection = null; try { URL url = new URL("http://www.baidu.com"); connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setConnectTimeout(8000); connection.setReadTimeout(8000); //以下这段全部是Java io流的知识,也是取东西的惯用程序 InputStream in = connection.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); StringBuilder response = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { response.append(line); } Message message = new Message(); message.obj = response.toString(); handler.sendMessage(message); } catch (Exception e) { e.printStackTrace(); } finally { if (connection != null) { connection.disconnect(); } } } }).start(); } }
注意java io流的学习,InputStream 和BufferedReader配合使用。StringBuilder.toString方法的使用。
这两天还学习了关于String在常量池和堆内存的存储知识,非常好。
2.HttpClient(deprecated in Android 6.0)
目前,android studio直接不认HttpClient这个类了,Google在6.0里面开始推荐使用HTtpURLConnection这个类,说这个类效率更高。
就这样。
HttpClient的使用:
还是直接上代码实在一些
HttpClient httpClient = new DefaultHttpClient(); HttpGet httpGet = new HttpGet("http://www.baidu.com"); HttpResponse httpResponse = httpClient.execute(httpGet); if (httpResponse.getStatusLine().getStatusCode() == 200) { // 请求和响应都成功了 HttpEntity entity = httpResponse.getEntity(); String response = EntityUtils.toString(entity, "utf-8"); Message message = new Message(); message.what = SHOW_RESPONSE; // 将服务器返回的结果存放到Message中 message.obj = response.toString(); handler.sendMessage(message);
代码直接来自郭神的第一行代码,谢郭神。
3.关于OkHttp这个开源库的使用,必须总结。
相关文章推荐
- 《TCP/IP详解 卷一:协议》读书笔记--IP:网际协议
- iOS 9使用HTTP(App Transport Security问题)
- 网络管理Network
- HTTP内建Authentication机制分析
- 常见端口、端口查询及TCP状态
- Tcpdump
- ios9 http请求
- 《深入理解Linux网络技术内幕》阅读笔记(十一)
- error: failed to push some refs to 'https://github.com/.....'
- butterknife+dagger+otto+okhttp+picasso+retrofit+rxjava示例项目
- 《TCP/IP详解 卷一:协议》读书笔记--链路层
- Ubuntu 虚拟机网络问题
- 安卓控件使用系列17:ImageView获取网络图片
- Qt开发——TCP协议下的socket通信
- TCP/IP详解卷1 读书笔记:第七章 Ping程序
- http://www.linuxidc.com/Linux/2007-09/7399.htm
- Http文件传输
- 网络编程
- http协议与内容压缩
- HttpClient实现网络访问详解1