Android的post请求工具,android HttpClient get请求与post请求工具类
今天在学习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请求工具类相关推荐
- java https post get请求_JAVA利用HttpClient进行POST和GET请求(HTTPS)
目前,要为另一个项目提供接口,接口是用HTTP URL实现的,最初的想法是另一个项目用JQuery post进行请求. 但是,很可能另一个项目是部署在别的机器上,那么就存在跨域问题,而JQuery的p ...
- 一步步教你为网站开发Android客户端---HttpWatch抓包,HttpClient模拟POST请求,Jsoup解析HTML代码,动态更新ListView...
本文面向Android初级开发者,有一定的Java和Android知识即可. 文章覆盖知识点:HttpWatch抓包,HttpClient模拟POST请求,Jsoup解析HTML代码,动态更新List ...
- Android 网络请求HttpURLConnection 和 HttpClient详解
Android一般通过http协议向服务端接口发送请求,常用有POST和GET传输方式.这种请求通常借助于HttpClient,HttpClient 是 Apache Jakarta Common 下 ...
- Android的post请求工具,Android客户端post请求服务器端实例
Android客户端请求服务器端的详细解释 1. Android客户端与服务器端通信方式:Android与服务器通信通常采用HTTP通信方式和Socket通信方式,而HTTP通信方式又分get和pos ...
- android网络请求分析工具,android网络数据请求
网络数据请求在android中应用很广泛,也很重要,所以我记录了上课讲的获取数据: 大家都知道,网络通信,发送请求有两种方式,GET和POST,这里也不例外. 1.HttpURLConnection的 ...
- Android使用Apache HttpClient发送GET、POST请求
2019独角兽企业重金招聘Python工程师标准>>> 简单的网页下载,HttpURLConnection可以完成,但是涉及到用户登录等权限相关问题,就需要涉及Session.Coo ...
- http请求过程 Android,android HTTP网络请求回顾
1.HTTP协议了解 http是一种应用层的协议,底层通过TCP来进行可靠的数据传输.HTTP是基于TCP的应用层协议,它在更高的层次封装了TCP的使用细节,使网络请求更加易用,TCP连接是因特网基于 ...
- 详细讲解Android的网络通信(HttpUrlConnection和HttpClient)
前言,Android的网络通信的方式有两种:使用Socket或者HTTP,今天这一篇我们详细讲解使用HTTP实现的网络通信,HTTP又包括两种方式编程方式: (1)HttpUrlConnection: ...
- android系统(9)---android工具网站
网站介绍:http://www.androiddevtools.cn/ AndroidDevTools 收集整理Android开发所需的Android SDK.开发中用到的工具.Android开发教程 ...
最新文章
- vc mysql控件_VC++使用ActiveX控件连接和操作数据库
- LVS负载均衡之ipvsadm部署安装(安装篇)
- 记录一下vlfeat视觉库配置
- SliverLight注册字典转换器方法
- Ubuntu 16.04 和 Ubuntu 18.04 启用 点击Launcher图标,窗口实现最小化 功能
- .NET HttpGet 获取服务器文件下的图片信息 同步和异步方式处理
- linux克隆后重新封装,克隆后立即在OSX上修改Linux内核源代码
- mysql8.0 tar安装_CentOS7安装MySQL8.0 tar包
- 1.5编程基础之循环控制 24 正常血压
- 小程序 | 微信小程序多图上传(点击上传、可修改删除与放大回显)
- jquery-表格的增删编辑演练-有一个小bug的
- JVM--心得 堆栈区域和GC的设置
- 计算机系统-实模式/保护模式/虚拟86模式
- 浏览器了解(七)Layout
- android:Read-only file system解决
- nginx低版本不支持pathinfo模式,thinkphp针对此问题的解决办法
- MySQL max_allowed_packet
- PDF文件不能打印的五种解决方案
- linux查看日志相关命令
- 广告传媒实际税负怎么计算_增值税的理论税负和实际计算公式
热门文章
- linux系统屏幕花屏,解决Virtual Pc下Linux花屏(屏幕显示不正常)
- element的复杂表单验证
- html导入图片怎么缩小体积,图片容量太大怎么变小 教你如何快速把图片容量变小 怎样把图片容量变小...
- datart 问题总结
- W的图像处理之圆检测(2)一圆形标记点的粗定位算法
- Nginx配置请求转发location及rewrite规则
- Allure测试框架
- 快嘴淘宝论坛群发王 2007 bt
- 相关sql语句的练习
- 公司级和个人级 苹果开发者账号 iTunes Connect 用户和职能(分账户) 的对比