Android_HttpClient_get请求post表单提交上传
来源:互联网 发布:网络刷手兼职 编辑:程序博客网 时间:2024/06/05 08:46
本博文为子墨原创,转载请注明出处!
http://blog.csdn.net/zimo2013/article/details/12193427
1.HttpRequestBase(HttpGet..)
HttpClient 支持多种访问网络的方式,包括GET, HEAD, POST, PUT, DELETE, TRACE and OPTIONS. 其对应子类为HttpGet, HttpHead, HttpPost, HttpPut, HttpDelete, HttpTrace, and HttpOptions.但在使用时多为HttpGet, HttpPost两种方式。
/** * 一个简单的get请求 */private static void get() {// 1.得到HttpClient对象HttpClient httpClient = new DefaultHttpClient();// 2.实例化一个HttpGet对象HttpGet httpGet = new HttpGet("http://www.baidu.com");try {// 3.httpClient执行httpGet请求HttpResponse response = httpClient.execute(httpGet);HttpEntity entity = response.getEntity();if (entity != null) { // 如果有数据表示请求成功System.out.println(EntityUtils.toString(entity, "utf-8"));} else {System.out.println("连接失败!");}} catch (Exception e) {e.printStackTrace();} finally {// 4.释放资源(Shuts down this connection manager and releases allocated// resources)httpClient.getConnectionManager().shutdown();}}
2.HttpResponse
通过得到HttpResponse对象,可以得到相关访问网络的信息,比如getEntity() getStatusLine()等等
System.out.println(response.getProtocolVersion());System.out.println(response.getStatusLine().getStatusCode());System.out.println(response.getStatusLine().getReasonPhrase());System.out.println(response.getStatusLine().toString());输出结果为/*HTTP/1.1200OKHTTP/1.1 200 OK*///得到请求的响应数据//方式一.HttpEntity entity = response.getEntity();if (entity != null) { // 如果有数据表示请求成功System.out.println(EntityUtils.toString(entity, "utf-8"));} else {System.out.println("连接失败!");}//方式二.if(response.getStatusLine().getStatusCode() == 200){HttpEntity myEntity = response.getEntity();BufferedInputStream in = new BufferedInputStream(myEntity.getContent());byte[] bytes = read(in);//通过自定义的read方法,取得该输入流对应的数据}
3.ResponseHandler
/** * 通过ResponseHandler处理请求 */private static void test() {HttpClient httpClient = new DefaultHttpClient();HttpGet httpGet = new HttpGet("http://www.baidu.com");//自定义ResponseHandler对象ResponseHandler<String> myHandler = new ResponseHandler<String>() {@Overridepublic String handleResponse(HttpResponse response)throws ClientProtocolException, IOException {HttpEntity entity = response.getEntity();String result = "连接失败!";if (entity != null) { // 如果有数据表示请求成功result = EntityUtils.toString(entity, "utf-8");}return result;}};try {String result = httpClient.execute(httpGet, myHandler);//接收该myHandler对象System.out.println(result);} catch (Exception e) {e.printStackTrace();} finally {// 释放资源(Shuts down this connection manager and releases allocated resources)httpClient.getConnectionManager().shutdown();}}
4.连接超时设置
HttpClient client = new DefaultHttpClient();//客户端的设置client.getParams().setParameter(HttpConnectionParams.CONNECTION_TIMEOUT, 1000);HttpGet get = new HttpGet("http://www.baidu.com");//如果当前的请求设置了,以当前为准,否则为client参数为准//连接超时get.getParams().setParameter(HttpConnectionParams.CONNECTION_TIMEOUT, 5000);//读取超时get.getParams().setParameter(HttpConnectionParams.SO_TIMEOUT, 1000, 5000);
5.GZIP压缩
对于文本数据,特别是json数据或者html网页数据,最好使用gzip进行压缩,理论上文本数据可以压缩为原来的1/3,效果很明显,压缩之后应该使用gzip流进行解压缩!get.addHeader("Accept-Encoding", "gzip");//使用addHeader,否则没有效果HttpResponse response = client.execute(get);int code = response.getStatusLine().getStatusCode();Header header = response.getFirstHeader("Content-Encoding");InputStream is = new BufferedInputStream(response.getEntity().getContent());if (header != null && header.getValue().contains("gzip")) {//首先判断服务器是否支持gzip压缩 is = new GZIPInputStream(is);}
6.Post完成Form表单的提交
/** * 完成form表单的提交 */private static void post() {HttpClient httpClient = new DefaultHttpClient();HttpPost httpPost = new HttpPost("http://127.0.0.1:8080/My/upload");try {// 为httpPost设置HttpEntity对象List<NameValuePair> parameters = new ArrayList<NameValuePair>();parameters.add(new BasicNameValuePair("username", "zhangsan"));parameters.add(new BasicNameValuePair("password", "123321"));HttpEntity entity = new UrlEncodedFormEntity(parameters);httpPost.setEntity(entity);// httpClient执行httpPost表单提交HttpResponse response = httpClient.execute(httpPost);// 得到服务器响应实体对象HttpEntity responseEntity = response.getEntity();if (responseEntity != null) {System.out.println(EntityUtils.toString(responseEntity, "utf-8"));System.out.println("表单上传成功!");} else {System.out.println("服务器无响应!");}} catch (Exception e) {e.printStackTrace();} finally {// 释放资源httpClient.getConnectionManager().shutdown();}}
7.Post完成文件的长传
/** * 通过post完成文件的上传 */private static void postFile() {HttpClient httpClient = new DefaultHttpClient();HttpPost httpPost = new HttpPost("http://127.0.0.1:8080/My/upload");try {// 需要上传的文件String root = "D:/api/";String fileName = "JDK6.0 中文文档.CHM";File uploadFile = new File(root+fileName);//定义FileEntity对象HttpEntity entity = new FileEntity(uploadFile);//为httpPost设置头信息httpPost.setHeader("filename", URLEncoder.encode(fileName,"utf-8"));//服务器可以读取到该文件名httpPost.setHeader("Content-Length", String.valueOf(entity.getContentLength()));//设置传输长度httpPost.setEntity(entity);//设置实体对象// httpClient执行httpPost提交HttpResponse response = httpClient.execute(httpPost);// 得到服务器响应实体对象HttpEntity responseEntity = response.getEntity();if (responseEntity != null) {System.out.println(EntityUtils.toString(responseEntity, "utf-8"));System.out.println("文件 "+fileName+"上传成功!");} else {System.out.println("服务器无响应!");}} catch (Exception e) {e.printStackTrace();} finally {// 释放资源httpClient.getConnectionManager().shutdown();}}
- Android_HttpClient_get请求post表单提交上传
- 模拟发送POST请求,提交表单
- Http 模拟form表单提交Post请求
- 表单提交数据get请求和post请求的区别
- 表单提交数据get请求和post请求的区别
- 表单提交数据get请求和post请求的区别
- 表单提交数据get请求和post请求的区别?
- 表单提交数据请求 get和post的 区别
- form表单中的get和post提交请求的区别
- 如何使用nodejs提交表单方式的post请求?
- form表单提交数据get,post请求的区别
- Node.js 处理post请求(表单提交)
- Play2.5获取POST请求提交的表单数据
- axios发送post请求,提交图片类型表单数据
- Node搭建服务器与GET请求,POST提交表单
- java模拟post方式提交表单实现图片上传
- php 利用fsockopen GET/POST 提交表单及上传文件
- java模拟post方式提交表单实现图片上传
- MySQL-SQL开发的经验总结
- 【opencv&VS2008】关于cvAdsDiffS的那些事
- "ios模拟器未能安装此应用程序"解决办法
- winscp
- ios的控件UIScrollView的位置定位
- Android_HttpClient_get请求post表单提交上传
- 一个IO应用--查询txt文件中的top1
- 全面学习观和创新学习观
- SQL server每个日志写(log write)究竟有多大?
- WPF设置全屏的方法
- 设置进程的显示名称
- linux输入子系统(1)
- eclipse 连接 小米2调试程序的问题
- 通过一段汇编,加深对寄存器ESP和EBP的理解