1.使用HttpURLConnection

  1. public static String getJsonByURL(String base_url) {
  2. String url = base_url;
  3. StringBuilder json = new StringBuilder();
  4. String result = "";
  5.  
  6. try {
  7. URL u = new URL(url);
  8. HttpURLConnection uc = (HttpURLConnection) u.openConnection();
  9. uc.setRequestMethod("GET");
  10. //uc.setRequestMethod("POST");
  11. /*
  12. String cookieVal =uc.getHeaderField("Set-Cookie"); //获取session
  13. String JSESSIONID = (cookieVal.substring(0,cookieVal.indexOf(";")));
  14. uc.setRequestProperty("Cookie", JSESSIONID);//设置session
  15. */
  16. BufferedReader bd = new BufferedReader(new InputStreamReader(uc.getInputStream(),"GBK"));
  17. String s = null;
  18. while((s=bd.readLine())!=null) {
  19. json.append(s);
  20. }
  21. bd.close();
  22. } catch (Exception e) {
  23. // TODO Auto-generated catch block
  24. e.printStackTrace();
  25. }
  26. result = json.toString();
  27.  
  28. return result;
  29. }

2.使用HttpClient

(1)get

  1. public static String getJsonByGet(String url) {
  2. String s = "";
  3. //CloseableHttpClient httpclient = HttpClients.createDefault();
  4. DefaultHttpClient httpclient = new DefaultHttpClient(new PoolingClientConnectionManager());
  5. HttpGet httpget = new HttpGet(url);
  6. CloseableHttpResponse response = null;
  7. HttpEntity entity = null;
  8. try {
  9. response = httpclient.execute(httpget);
  10. entity = response.getEntity();
  11. /*
  12. CookieStore cookieStore = httpclient.getCookieStore();//获取cookies
  13. httpclient.setCookieStore(cookieStore);//设置cookies
  14. */
  15. s = EntityUtils.toString(entity, "UTF-8");
  16. } catch (ClientProtocolException e) {
  17. // TODO Auto-generated catch block
  18. e.printStackTrace();
  19. } catch (IOException e) {
  20. // TODO Auto-generated catch block
  21. e.printStackTrace();
  22. }finally {
  23. httpclient.close();
  24. }
  25. return s;
  26. }

(POST)

  1. public static String getJsonByPost(String url) {
  2.  
  3. DefaultHttpClient httpclient = new DefaultHttpClient(new PoolingClientConnectionManager());
  4. //CloseableHttpClient httpclient = HttpClients.createDefault();
  5. HttpPost httppost = new HttpPost(url);
  6.  
  7. CloseableHttpResponse response = null;
  8. HttpEntity entity = null;
  9. String s = "";
  10. try {
  11. response = httpclient.execute(httppost);
  12. entity = response.getEntity();
  13. s = EntityUtils.toString(entity, "UTF-8");
  14. } catch (ClientProtocolException e1) {
  15. // TODO Auto-generated catch block
  16. e1.printStackTrace();
  17. } catch (IOException e1) {
  18. // TODO Auto-generated catch block
  19. e1.printStackTrace();
  20.  
  21. }finally {
  22. httpclient.close();
  23. }
  24. return s;
  25. }

获取cookies和设置cookies的位置要根据不同的接口而定。

以上的方法是把接口的参数,在调用方法之前就配好了,作为url传入。也可在调用的相应方法内部做处理。

1.使用HttpURLConnection

  1. public static byte[] getJsonByURL(String url, String params) throws Exception{
  2. URL url = new URL(url);
  3. HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  4. conn.setRequestMethod("POST");//
  5. // conn.setConnectTimeout(10000);//
  6. // conn.setReadTimeout(2000);//
  7. conn.setDoOutput(true);//
  8. byte[] bypes = params.toString().getBytes();
  9. conn.getOutputStream().write(bypes);// 输入参数
  10. InputStream inStream=conn.getInputStream();
  11. return StreamTool.readInputStream(inStream);
  12. }

对参数的处理有很多方法,可以append(),也可以自己+,不同参数,不同方法重载

2.使用HttpClient

  1. package com.tradeyun;
  2.  
  3. import java.io.IOException;
  4. import java.io.UnsupportedEncodingException;
  5. import java.net.URI;
  6. import java.net.URISyntaxException;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9.  
  10. import org.apache.http.HttpEntity;
  11. import org.apache.http.HttpResponse;
  12. import org.apache.http.NameValuePair;
  13. import org.apache.http.client.ClientProtocolException;
  14. import org.apache.http.client.HttpClient;
  15. import org.apache.http.client.config.RequestConfig;
  16. import org.apache.http.client.entity.UrlEncodedFormEntity;
  17. import org.apache.http.client.methods.CloseableHttpResponse;
  18. import org.apache.http.client.methods.HttpGet;
  19. import org.apache.http.client.methods.HttpPost;
  20. import org.apache.http.client.utils.URIUtils;
  21. import org.apache.http.client.utils.URLEncodedUtils;
  22. import org.apache.http.impl.client.CloseableHttpClient;
  23. import org.apache.http.impl.client.DefaultHttpClient;
  24. import org.apache.http.impl.client.HttpClientBuilder;
  25. import org.apache.http.impl.client.HttpClients;
  26. import org.apache.http.impl.conn.PoolingClientConnectionManager;
  27. import org.apache.http.message.BasicNameValuePair;
  28. import org.apache.http.util.EntityUtils;
  29.  
  30. /**
  31. * @author QiaoJiafei
  32. * @version 创建时间:2015年12月18日 上午10:03:12
  33. * 类说明
  34. */
  35. public class TestHttpClientParameter {
  36. public static void main(String args[]) {
  37. /* HttpClient httpclient = new DefaultHttpClient(new PoolingClientConnectionManager());
  38. String s = "";
  39. HttpResponse response = null;
  40. HttpEntity entity = null;
  41. String url = "http://172.16.30.244:8090/gm_product_site/assignmentApply/auth";
  42. System.out.println("url=========="+url);
  43. HttpPost post = new HttpPost(url);
  44. List formparams = new ArrayList();
  45. formparams.add(new BasicNameValuePair("applyId","1"));
  46. formparams.add(new BasicNameValuePair("isPass","true"));
  47. //formparams.add(new BasicNameValuePair("pwd","aaaaaa1"));
  48. //formparams.add(new BasicNameValuePair("pwd", "aaaaaa1"));
  49. UrlEncodedFormEntity uefEntity;
  50. try {
  51. uefEntity = new UrlEncodedFormEntity(formparams, "UTF-8");
  52.  
  53. post.setEntity(uefEntity);
  54. System.out.println("executing request " + post.getURI());
  55. response = httpclient.execute(post);
  56. entity = response.getEntity();
  57. s= EntityUtils.toString(entity, "UTF-8");
  58. System.out.println(s);
  59.  
  60. } catch (Exception e) {
  61. // TODO Auto-generated catch block
  62. e.printStackTrace();
  63. } */ //不成功
  64. TestHttpClientParameter t = new TestHttpClientParameter();
  65. t.post3();
  66. }
  67.  
  68. public void post3() {
  69. HttpClient httpclient = new DefaultHttpClient(new PoolingClientConnectionManager());
  70. String s = "";
  71. HttpResponse response = null;
  72. HttpEntity entity = null;
  73. String url = "http://172.16.30.244:8090/gm_product_site/assignmentApply/auth";
  74. System.out.println("url=========="+url);
  75. HttpPost post = null;
  76. List formparams = new ArrayList();
  77. formparams.add(new BasicNameValuePair("applyId","1"));
  78. formparams.add(new BasicNameValuePair("isPass","true"));
  79.  
  80. UrlEncodedFormEntity uefEntity;
  81. try {
  82. uefEntity = new UrlEncodedFormEntity(formparams, "UTF-8");
  83.  
  84. URI uri=null;
  85. try {
  86. uri = URIUtils.createURI("http", "172.16.30.244:8090", -1, "/gm_product_site/assignmentApply/auth",
  87. URLEncodedUtils.format(formparams, "UTF-8"), null);
  88. } catch (URISyntaxException e) {
  89. // TODO Auto-generated catch block
  90. e.printStackTrace();
  91. }
  92. post = new HttpPost(uri);
  93. System.out.println(post.getURI());
  94. response = httpclient.execute(post);
  95. entity = response.getEntity();
  96. s= EntityUtils.toString(entity, "UTF-8");
  97. System.out.println(s);
  98.  
  99. } catch (Exception e) {
  100. // TODO Auto-generated catch block
  101. e.printStackTrace();
  102. }
  103. }
  104. }

httpclient也可以使用下面的方式:

  1. package com.core.execute;
  2.  
  3. import java.io.UnsupportedEncodingException;
  4. import java.util.ArrayList;
  5. import java.util.HashMap;
  6. import java.util.List;
  7. import java.util.Map;
  8.  
  9. import org.apache.http.HttpEntity;
  10. import org.apache.http.HttpResponse;
  11. import org.apache.http.NameValuePair;
  12. import org.apache.http.client.HttpClient;
  13. import org.apache.http.client.entity.UrlEncodedFormEntity;
  14. import org.apache.http.client.methods.HttpPost;
  15. import org.apache.http.impl.client.HttpClients;
  16. import org.apache.http.message.BasicNameValuePair;
  17. import org.apache.http.util.EntityUtils;
  18.  
  19. /**
  20. * @author QiaoJiafei
  21. * @version 创建时间:2016年3月2日 上午10:54:24
  22. * 类说明
  23. */
  24. public class TestMapPara {
  25. static HttpClient client = HttpClients.createDefault();
  26.  
  27. public static void main(String args[]) {
  28. Map<String, String> map = new HashMap<String, String>();
  29. map.put("id", "22");
  30. postmap(map);
  31. }
  32.  
  33. private static void postmap(Map<String, String> params) {
  34. // TODO Auto-generated method stub
  35. String url = "http://172.16.30.73:8080/test/user/update";
  36. HttpPost httppost = new HttpPost(url);
  37. List<NameValuePair> ps = new ArrayList<NameValuePair>();
  38. for (String pKey : params.keySet()) {
  39. ps.add(new BasicNameValuePair(pKey, params.get(pKey)));
  40. }
  41. try {
  42. httppost.setEntity(new UrlEncodedFormEntity(ps));
           //上面一行代码也可以使用带有编码格式的构造方法,如new UrlEncodedFormEntity(ps, "UTF-8");
  43. HttpResponse response = client.execute(httppost);
  44. HttpEntity httpEntity = response.getEntity();
  45. System.out.println(EntityUtils.toString(httpEntity,"utf-8"));
  46. } catch (Exception e) {
  47. // TODO Auto-generated catch block
  48. e.printStackTrace();
  49. }
  50.  
  51. }
  52.  
  53. }

java使用HttpURLConnection和HttpClient分别模拟get和post请求以及操作cookies的更多相关文章

  1. java 的http请求方式:HttpURLConnection和HttpClient

    1.要了解一些概念性的东西,比如Http的协议以及协议头等一些东东 2.HttpURLConnection一般步骤:创建URL对象==>获取URL的HttpURLConnection对象实例== ...

  2. HttpClient方式模拟http请求

    方式一:HttpClient import org.apache.commons.lang.exception.ExceptionUtils; import org.apache.http.*; im ...

  3. Java使用HttpURLConnection上传文件

    从普通Web页面上传文件非常easy.仅仅须要在form标签叫上enctype="multipart/form-data"就可以,剩余工作便都交给浏览器去完毕数据收集并发送Http ...

  4. Java使用HttpURLConnection上传文件(转)

    从普通Web页面上传文件很简单,只需要在form标签叫上enctype="multipart/form-data"即可,剩余工作便都交给浏览器去完成数据收集并发送Http请求.但是 ...

  5. Android HttpURLConnection And HttpClient

    Google的工程师的一个博客写到: HttpURLConnection和HttpClient Volley HTTP请求时:在Android 2.3及以上版本,使用的是HttpURLConnecti ...

  6. android中的HttpURLConnection和HttpClient实现app与pc数据交互

    自学android的这几天很辛苦,但是很满足,因为每当学到一点点知识点都会觉得很开心,觉得今天是特别有意义的,可能这个就是一种莫名的热爱吧. 下面来说说今天学习的HttpURLConnection和H ...

  7. android 网络编程之HttpURLConnection与HttpClient使用与封装

    1.写在前面     大部分andriod应用需要与服务器进行数据交互,HTTP.FTP.SMTP或者是直接基于SOCKET编程都可以进行数据交互,但是HTTP必然是使用最广泛的协议.     本文并 ...

  8. Android网络连接之HttpURLConnection和HttpClient

    1.概念   HTTP 协议可能是现在 Internet 上使用得最多.最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源.在 JDK 的 java.net 包中 ...

  9. HttpURLConnection和HttpClient

    HTTP 协议可能是现在 Internet 上使用得最多.最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源.在 JDK 的 java.net 包中已经提供了访问 ...

随机推荐

  1. 发现自己喜欢了移动端开发--Android

    喜欢.net一直到现在了,但是自己做过的项目都不是让我自己很满意,不知道为什么,可能是自己的要求比较高吧! 下面自己记录自己的学习 src专门存放我们java源代码的包 Android 4.2.2存放 ...

  2. 重大发现Discuz DB层跨库映射关系表名前缀BUG

    本文更新:http://www.cnblogs.com/x3d/p/3916198.html 场景: 在Discuz中创建Table模型,但该Table所在库与Discuz不在同一个库. Discuz ...

  3. 使用PowerQuery操作OData数据

             Excel是我们耳熟的办公软件.PowerQuery是一个允许连接多种数据源的Excel插件.它能从一个网页上智能查询数据.使用PowerQuery能合并数据集使用join,merg ...

  4. 个人收集整理的5Ucms标签

    {field:cid} 当前栏目id {field:id}  当前页面id {field:content} 当前页面内容 [List:Modifytime $format=yy-mm-dd] 文章发布 ...

  5. CSS基础选择器温故-1

    1.基本选择器语法 2.浏览器兼容性:浏览器对基本选择器都是一路绿灯通行,可以放心使用. 3.通配选择器:选择所有元素,也可以选择某个元素下的所有元素 (1)选择所有元素: *{margin: 0;p ...

  6. sharepoint 2013 文件“/_controltemplates/SPMRB/AllStatBookingsForm.ascx”不存在

    现象: 文件“/_controltemplates/SPMRB/AllStatBookingsForm.ascx”不存在. 分析: 此代码在sp2010好用,但是在sp2013则报以上错误. 解决办法 ...

  7. 自定义带进度条的WebView , 增加获取web标题和url 回掉

    1.自定义ProgressWebView package com.app.android05; import android.content.Context; import android.graph ...

  8. Quartz2D学习笔记

    1.drawRect方法 //1.证明drawRect方法是在viewDidLoad后自动调用的,方便处理View的相关属性 // YQView * view = [[YQView alloc] in ...

  9. IOS 杂笔-3 (property参数)

    (1)内存管理相关参数 Retain:对对象release旧值,retain新值(适用于OC对象类型) Assign:直接赋值(默认,适用于非oc对象类型) Copy:release旧值,copy新值 ...

  10. 【原】UIView实现点击着重效果的解决方案

    我们知道,在IOS中UIButton UIControl都有一个默认的选中效果,即点中后会图标会变暗,移开后又恢复正常.如何让UIView UIImageView等这些普通的view也实现同样的效果呢 ...