网络——使用HttpClient
来源:互联网 发布:张学友最好的live 知乎 编辑:程序博客网 时间:2024/05/29 18:18
HttpClient 是Apache 提供的HTTP 网络访问接口(无法创建实例),可以完成和HttpURLConnection 几乎一模一样的效果,但是用法与HttpURLConnection差别很大
通常会创建一个DefaultHttpClient 的实例:
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet("https://www.baidu.com");
然后调用HttpClient 的execute()方法
httpClient.execute(httpGet); //返回一个HttpResponse 对象,服务器所返回的所有信息就会包含在这里面
若要发起一条POST 请求,需要创建一个HttpPost 对象,并传入目标的网络地址
HttpPost httpPost = new HttpPost("https://www.baidu.com");再通过一个NameValuePair 集合来存放待提交的参数
List<NameValuePair> params = new ArrayList<NameValuePair>();params.add(new BasicNameValuePair("username", "admin"));params.add(new BasicNameValuePair("password", "123456"));将这个参数集合传入到一个UrlEncodedFormEntity 中,
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params, "utf-8");然后调用HttpPost 的setEntity()方法将构建好的UrlEncodedFormEntity传入
httpPost.setEntity(entity);调用HttpClient 的execute()方法
httpClient.execute(httpGet); //返回一个HttpResponse 对象,服务器所返回的所有信息就会包含在这里面
通常情况下都会先取出服务器返回的状态码,如果等于200 就说明请求和响应都成功了
if (httpResponse.getStatusLine().getStatusCode() == 200) { Toast.makeText(this, "请求和响应都成功了", Toast.LENGTH_SHORT).show();}
例子:同HttpURLConnection,修改MainActivity代码
public class MainActivity extends AppCompatActivity { Button btnSend; TextView textView; private int SHOW_RESPONSE = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnSend = (Button) findViewById(R.id.btn_send); textView = (TextView) findViewById(R.id.tv); btnSend.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { sendRequestWithHttpClient(); btnSend.setVisibility(View.GONE); } }); } private void sendRequestWithHttpClient() { new Thread(new Runnable() { //开启子线程发起网络请求 @Override public 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 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); } } catch (Exception e) { e.printStackTrace(); } } }).start(); }}
运行结果与HttpURLConnection的一样
android6.0SDK中删除HttpClient的相关类
0 0
- 网络——使用HttpClient
- Android使用HTTP协议访问网络——HttpClient
- 使用HttpClient访问网络
- 使用HttpClient访问网络
- 使用HttpClient下载网络图片
- HttpClient使用详解 网络爬虫
- 使用HttpClient方式请求网络
- java使用HTTPclient访问网络
- 使用HttpClient方式请求网络
- android使用httpClient访问网络
- android网络应用4——HttpClient
- Android 网络通信——HttpClient
- Android中网络请求—HttpClient、HttpURLConnection
- 使用htmlparser和httpClient制作网络爬虫——JavaScript隐藏邮箱解析问题
- Android——使用HttpClient的HttpGet和Post方式进行网络通信
- Android网络连接----使用HttpClient连接网络
- 使用Http访问网络(使用Apache HttpClient)
- 尽量使用httpclient进行网络连接
- Oracle 锁
- django basic command
- php的四个基本类
- 第十一周日期妙算星座
- 记一次XIB使用UIScrollView的坑
- 网络——使用HttpClient
- 使用spring注解方式实现组件的声明,并且用注解注入方式解决依赖关系
- O(nlogn)排序算法--QuickRank
- mysql性能优化
- 百度地图中,申请key值时注意的事项
- 深入理解DIP、IoC、DI以及IoC容器
- 微信接入探秘(四)——万事俱备,只欠架构(回调篇)
- Maven的生命周期和插件
- iOS UIWebView 获取Url