使用Http协议访问网络--HttpClient

public interface

HttpClient

org.apache.http.client.HttpClient

HttpClient是Apache提供的Http网络访问接口。
1、创建HttpClient实例
HttpClient是一个接口,无法直接创建实例,通常创建一个DefaultHttpClient(HttpClient 的SubClass)实例。

HttpClient httpClient = new DefaultHttpClient();

2、如果想要发起一条GET请求 ,可以创建一个HttpGet对象,传入目标地址,之后调用HttpClient的execute()方法

HttpGet = new HttpClient("http://www.baidu.com");
httpClient.execute(httpGet);

3、执行execute()后,会返回一个HttpResponse对象,服务器返回的所有信息都在这里面,通常都会先取出服务器返回的状态吗,若等于200则说明请求和相应都成功了

if(httpResponse.getStatusLine().getStatusCode() == 200){
}

接下来在这个if判断内部取出服务返回的具体内容,可以调用httpResponse getEntity()获得一个HttpEntity实例,再调用EntityUtils.toString这个静态方法将HttpEntity转换成字符串

HttpEntity httpEntity = httpResponse.getEntity();
String responseString = EntityUtils.toString(httpEntity,"utf-8");

由于在子线程中无法对UI操作,最后使用Message,将服务器返回的数据放到Message对象中,用Handler将messge发送出去,在主线程进行UI操作

//将服务器返回的结果存放到Message对象中
Message message = Message.obtain(mHandler, SEND_REQUEST, responseString);
mHandler.sendMessage(message);

Handler mHandler = new Handler(){@Overridepublic void handleMessage(Message msg){if(msg.what == SEND_REQUEST){String response = (String)msg.obj;responseTextView.setText(response);}}};

主要代码:
public class MainActivity extends ActionBarActivity implements OnClickListener{private Button sendRequestBtn;private TextView responseTextView;private int SEND_REQUEST = 0;Handler mHandler = new Handler(){@Overridepublic void handleMessage(Message msg){if(msg.what == SEND_REQUEST){String response = (String)msg.obj;responseTextView.setText(response);}}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);sendRequestBtn = (Button)findViewById(R.id.requestBtn);responseTextView = (TextView)findViewById(R.id.responseText);sendRequestBtn.setOnClickListener(this);}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif(v.getId() == R.id.requestBtn){sendRequestWithHttpClient();}}private void sendRequestWithHttpClient(){new Thread(new Runnable(){@Overridepublic void run(){try{HttpClient httpClient = new DefaultHttpClient();HttpGet httpGet= new HttpGet("http://www.baidu.com");HttpResponse httpResponse = httpClient.execute(httpGet);if(httpResponse.getStatusLine().getStatusCode() == 200){//获得消息的响应实体HttpEntity httpEntity = httpResponse.getEntity();String responseString = EntityUtils.toString(httpEntity,"utf-8");//将服务器返回的结果存放到Message对象中Message message = Message.obtain(mHandler, SEND_REQUEST, responseString);mHandler.sendMessage(message);}}catch(Exception e){e.printStackTrace();}}}).start();}}



 完整代码在:https://github.com/HiSunny/ComeOnHttpClient.git

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/348732.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

编写测试用例

1、创建测试用例 为ComeOnBroadcastReceiverDo创建一个测试用例: 在导航栏File-->New-->Other 选择AndroidTestProject 2、点击next输入测试工程的name,选择测试工程路径 点击next,选择要测试的工程: 点击Finish完成测试工程的新建 被…

欢迎界面动画

实现一个欢迎界面的动画&#xff0c;即打开app显示的页面&#xff0c;动画结束后跳到Activity。 1、欢迎界面的背景是一个绿色矩形 <?xml version"1.0" encoding"utf-8"?> <shape xmlns:android"http://schemas.android.com/apk/res/andr…

动画机制与使用

Android3.0之前有两种动画&#xff0c;一种方式是补间动画 Tween Animation、另一种叫逐帧动画 Frame Animation&#xff08;也称Drawable Animation &#xff09;Android3.0以后增加了属性动画 Property Animation。Tween Animation、Frame Animation只能用于View&#xff0c;…

1、HTTP--Web's foundation

1、1 HTTP(HyperText Transfer Protocol)超文本传输协议----Internet的多媒体信使 1、2 Web客户端和服务器 Web内容都是存储在Web服务器上的&#xff0c;Web服务器使用的是HTTP协议&#xff0c;因此常被成为HTTP服务器。HTTP服务器和HTTP客户端共同构成World Wide Web的基本组…

IP地址分类及ISO-OSI、三次握手

1. A类地址A类地址的表示范围为&#xff1a;0.0.0.0~126.255.255.255(00000000~01111110)&#xff0c;最前面一位是“0”&#xff0c;用7位&#xff08;bit&#xff09;来标识网络号&#xff0c;24位标识主机号&#xff1b;默认网络掩码为&#xff1a;255.0.0.0&#xff0c;111…

drools 决策表_骆驼和春天的Drools决策表

drools 决策表正如我在之前的文章中所展示的那样&#xff0c; JBoss Drools是一个非常有用的规则引擎 。 唯一的问题是&#xff0c;对于非技术人员而言&#xff0c;以Rule语言创建规则可能会非常复杂。 这就是为什么人们可以提供一种简便的方法来创建业务规则-在电子表格中创建…

Thinking in Java方法签名

方法名和参数&#xff08;即&#xff0c;方法签名&#xff09;唯一标识某个方法&#xff1a;如&#xff0c; public void add(int a,int b){ } //这两个方法的方法签名一样&#xff0c;是不能在同一.java里的&#xff0c;编译通不过 public int add(int a,intb){ return a b; …

在Java中处理异常

每个程序员都希望编写一个完美的程序。 也就是说&#xff0c;程序运行时没有任何障碍。 好吧&#xff0c;如果希望是马&#xff0c;乞g就会骑。 除了程序员的所有愿望之外&#xff0c;有时还会发生无法预料的情况。 这些不可预见的情况在Java中通常被归类为“例外”。 异常会…

通信系统的组成

数字通信模型&#xff1a; http://blog.csdn.net/yaosiming2011/article/details/44280797 进程和线程

存储卡显示0字节怎么办?恢复0字节的存储小技巧

存储卡显示0字节是一个常见的故障现象&#xff0c;可能由多种原因引起。本文将详细分析存储卡出现此类问题的各种原因&#xff0c;并提供针对性的解决方法。通过深入了解这些原因和解决方案&#xff0c;读者可以有效地应对存储卡显示0字节的故障&#xff0c;从而恢复存储卡的正…

OSI模型和TCP/IP协议族

1、协议分层 两个实体之间要进行通信就需要有一个协议。而当通信比较复杂时就有必要将这个复杂的任务划分为多层&#xff0c;就需要有多个协议&#xff0c;每一层都有自己的协议。 2、ISO 国际标准化组织&#xff08;International Standard Organization &#xff0c; ISO&…

亚马逊s3的使用方法_使用jclouds库在Amazon S3上上传

亚马逊s3的使用方法在Java世界中&#xff0c;有几种很好的方法可以将内容上传到S3存储桶-在本文中&#xff0c;我们将研究jclouds库为此提供的功能。 要使用jclouds –特别是本文中讨论的API&#xff0c;应将此简单的Maven依赖项添加到项目的pom中&#xff1a; <dependency…

在PhotoShop中改像素m*n

快捷键&#xff1a;CtrlAlti&#xff0c;如图&#xff0c;改为28*28

Spring Boot Redis简介

1.概述 在本文中&#xff0c;我们将通过Spring Data Redis库回顾如何将Redis与Spring Boot结合使用的基础知识。 我们将构建一个应用程序&#xff0c;演示如何通过Web界面执行CRUD操作Redis 。 Github上提供了该项目的完整源代码。 2.什么是Redis&#xff1f; Redis是一个开源…

Dijkstra-解决最短路径问题

1、从A开始&#xff08;也可以从其他点&#xff0c;此处选择从A&#xff09; 将A 加入树&#xff0c;A被圈红 列出最短路径数组&#xff1a; 2、 确定从A到其他顶点的最短距离为50&#xff0c;A-->B 将B加入树&#xff1a; 更新最短路径数组&#xff1a; 比较到C的距离&a…

jackson使用_如何在Jackson中使用PropertyNamingStrategy

jackson使用Jackson api被广泛用于将json转换为Object并将Object转换为JSON。因此&#xff0c;如果您有json字符串并想在java对象中进行转换&#xff0c;请创建与json中的字段相同的bean的字段名。 Jackson在将json字段映射到java对象字段时遵循标准的bean约定&#xff0c;但是…

简单排序--冒泡排序

冒泡排序&#xff1a; public void sort(){int out,in;//out指向已经排好序的前一个for( outnElements-1;out>1;out--){for(in0;in<out;in){if(arr[in]>arr[in1]){swap(in,in1);//相邻的两个元素比较&#xff0c;交换}}}}//实现冒泡排序相邻的元素两两比较&#xff0c…

jca使用_使用JCA的密码学–提供者中的服务

jca使用Java密码体系结构&#xff08;JCA&#xff09;是一个可扩展的框架&#xff0c;使您能够使用执行加密操作。 JCA还促进实现独立性&#xff08;程序不应该在乎谁提供加密服务&#xff09;和实现互操作性&#xff08;程序不应该与特定加密服务的特定提供者联系在一起&#…

简单排序--选择排序

选择排序&#xff1a; public void sort(){int out,in,min;for(out0;out<nElements-1;out){min out;for(inout1;in<nElements;in)if(arr[in]<arr[min])min in;swap(out,min);//将min放在out位置&#xff0c;out始终指向最小值的下一个位置&#xff0c;即下一个min要…