今天在学习android的http通信时,在一个网上的demo中,发现了一个个人感觉比较好用的HttpClient发送get请求与post请求的工具类,所以个人把它整理与修改了一下,希望能够帮助有需要的人:import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.HttpStatus;

import org.apache.http.NameValuePair;

import org.apache.http.client.HttpClient;

import org.apache.http.client.entity.UrlEncodedFormEntity;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.message.BasicNameValuePair;

import org.apache.http.util.EntityUtils;

/**

* HTTP通信的工具类

*/

public final class HttpUtil {

/** 定义HTTP通信的对象 */

private static HttpClient httpClient = new DefaultHttpClient();

/** 定义基础的请求URL */

private static final String BASE_URL = "http://wenwen.soso.com/p/20120206/20120206134715-1866254203.jpg";

/**

* 发送GET请求方法

* @param requestUrl 请求的URL

* @return 响应的数据

*/

public static InputStream sendGetRequest(String requestUrl){

/** 创建get请求对象 */

HttpGet httpGet = new HttpGet(BASE_URL + requestUrl);

try {

/** 执行GET请求 */

HttpResponse response = httpClient.execute(httpGet);

/** 判断响应的状态码: 200代表响应成功 */

if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){

/** 获取响应的实体 */

HttpEntity entity = response.getEntity();

/** 返回响应的数据 */

return entity.getContent(); //当需要返回为输入流InputStream时的返回值

//return EntityUtils.toString(entity); // 当返回的类型为Json数据时,调用此返回方法

}

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

/**

* 发送post请求

* @param requestUrl 请求的URL

* @param params 请求的参数

* @return 响应的数据

*/

public static InputStream sendPostRequest(String requestUrl, Map params){

/** 创建post请求对象 */

HttpPost httpPost = new HttpPost(BASE_URL + requestUrl);

try {

/** 设置请求参数 */

if (params != null && params.size() > 0){

/** 将map转化成list集合 */

List paramLists = new ArrayList();

for (Map.Entry map : params.entrySet()){

paramLists.add(new BasicNameValuePair(map.getKey(), map.getValue()));

}

/** 为POST请设置请求参数 */

httpPost.setEntity(new UrlEncodedFormEntity(paramLists, "UTF-8"));

}

/** 执行post请求 */

HttpResponse response = httpClient.execute(httpPost);

/** 对响应的状态做判断 */

if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){

/** 服务器响应成功 , 获取响应实体*/

HttpEntity entity = response.getEntity();

/** 返回响应数据 */

return entity.getContent(); //当需要返回为输入流InputStream时的返回值

//return EntityUtils.toString(entity);

}

} catch (Exception e) {

System.out.println(BASE_URL + requestUrl);

e.printStackTrace();

}

return null;

}

}

当然,基本请求Url  BASE_URL  需要我们视情况而定,当我们需要的返回值类型为输入流时

return entity.getContent(); //当需要返回为输入流InputStream时的返回值

当我们需要的返回值类型为Json格式字符串时,我们返回

return EntityUtils.toString(entity); // 当返回的类型为Json数据时,调用此返回方法下面是一个调用的Demo

XML:

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".MainActivity"

android:orientation="vertical" >

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="连接"

android:onClick="check"/>

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:id="@+id/iv"/>

代码调用:public void check(View v){

new Thread(){

public void run() {

InputStream is = HttpUtil.sendGetRequest("");

Bitmap map = BitmapFactory.decodeStream(is);

Message msg = Message.obtain();

msg.obj = map;

handler.sendMessage(msg);

};

}.start();

}

private Handler handler = new Handler(){

public void handleMessage(Message msg) {

iv.setScaleType(ScaleType.FIT_CENTER);

iv.setImageBitmap((Bitmap) msg.obj);

};

};

效果图:

当然,本人调用的是HttpUtil.sendGetRequest("")方法,sendPostRequest()方法网络返回状态为400,估计要在项目中或者要自己建立服务器来处理Post请求才可以

Android的post请求工具,android HttpClient get请求与post请求工具类相关推荐

  1. java https post get请求_JAVA利用HttpClient进行POST和GET请求(HTTPS)

    目前,要为另一个项目提供接口,接口是用HTTP URL实现的,最初的想法是另一个项目用JQuery post进行请求. 但是,很可能另一个项目是部署在别的机器上,那么就存在跨域问题,而JQuery的p ...

  2. 一步步教你为网站开发Android客户端---HttpWatch抓包,HttpClient模拟POST请求,Jsoup解析HTML代码,动态更新ListView...

    本文面向Android初级开发者,有一定的Java和Android知识即可. 文章覆盖知识点:HttpWatch抓包,HttpClient模拟POST请求,Jsoup解析HTML代码,动态更新List ...

  3. Android 网络请求HttpURLConnection 和 HttpClient详解

    Android一般通过http协议向服务端接口发送请求,常用有POST和GET传输方式.这种请求通常借助于HttpClient,HttpClient 是 Apache Jakarta Common 下 ...

  4. Android的post请求工具,Android客户端post请求服务器端实例

    Android客户端请求服务器端的详细解释 1. Android客户端与服务器端通信方式:Android与服务器通信通常采用HTTP通信方式和Socket通信方式,而HTTP通信方式又分get和pos ...

  5. android网络请求分析工具,android网络数据请求

    网络数据请求在android中应用很广泛,也很重要,所以我记录了上课讲的获取数据: 大家都知道,网络通信,发送请求有两种方式,GET和POST,这里也不例外. 1.HttpURLConnection的 ...

  6. Android使用Apache HttpClient发送GET、POST请求

    2019独角兽企业重金招聘Python工程师标准>>> 简单的网页下载,HttpURLConnection可以完成,但是涉及到用户登录等权限相关问题,就需要涉及Session.Coo ...

  7. http请求过程 Android,android HTTP网络请求回顾

    1.HTTP协议了解 http是一种应用层的协议,底层通过TCP来进行可靠的数据传输.HTTP是基于TCP的应用层协议,它在更高的层次封装了TCP的使用细节,使网络请求更加易用,TCP连接是因特网基于 ...

  8. 详细讲解Android的网络通信(HttpUrlConnection和HttpClient)

    前言,Android的网络通信的方式有两种:使用Socket或者HTTP,今天这一篇我们详细讲解使用HTTP实现的网络通信,HTTP又包括两种方式编程方式: (1)HttpUrlConnection: ...

  9. android系统(9)---android工具网站

    网站介绍:http://www.androiddevtools.cn/ AndroidDevTools 收集整理Android开发所需的Android SDK.开发中用到的工具.Android开发教程 ...

最新文章

  1. vc mysql控件_VC++使用ActiveX控件连接和操作数据库
  2. LVS负载均衡之ipvsadm部署安装(安装篇)
  3. 记录一下vlfeat视觉库配置
  4. SliverLight注册字典转换器方法
  5. Ubuntu 16.04 和 Ubuntu 18.04 启用 点击Launcher图标,窗口实现最小化 功能
  6. .NET HttpGet 获取服务器文件下的图片信息 同步和异步方式处理
  7. linux克隆后重新封装,克隆后立即在OSX上修改Linux内核源代码
  8. mysql8.0 tar安装_CentOS7安装MySQL8.0 tar包
  9. 1.5编程基础之循环控制 24 正常血压
  10. 小程序 | 微信小程序多图上传(点击上传、可修改删除与放大回显)
  11. jquery-表格的增删编辑演练-有一个小bug的
  12. JVM--心得 堆栈区域和GC的设置
  13. 计算机系统-实模式/保护模式/虚拟86模式
  14. 浏览器了解(七)Layout
  15. android:Read-only file system解决
  16. nginx低版本不支持pathinfo模式,thinkphp针对此问题的解决办法
  17. MySQL max_allowed_packet
  18. PDF文件不能打印的五种解决方案
  19. linux查看日志相关命令
  20. 广告传媒实际税负怎么计算_增值税的理论税负和实际计算公式

热门文章

  1. linux系统屏幕花屏,解决Virtual Pc下Linux花屏(屏幕显示不正常)
  2. element的复杂表单验证
  3. html导入图片怎么缩小体积,图片容量太大怎么变小 教你如何快速把图片容量变小 怎样把图片容量变小...
  4. datart 问题总结
  5. W的图像处理之圆检测(2)一圆形标记点的粗定位算法
  6. Nginx配置请求转发location及rewrite规则
  7. Allure测试框架
  8. 快嘴淘宝论坛群发王 2007 bt
  9. 相关sql语句的练习
  10. 公司级和个人级 苹果开发者账号 iTunes Connect 用户和职能(分账户) 的对比