- 浏览: 741799 次
- 性别:
- 来自: 重庆
-
文章分类
- 全部博客 (173)
- JAVA (54)
- ORACLE (3)
- JAVASCRIPT (7)
- STRUCT2 (4)
- SPRING (12)
- EXTJS (7)
- JQUERY (4)
- SQLSERVER (10)
- IBATIS (1)
- MYSQL (6)
- JS (1)
- HTML5 (1)
- TOMCAT (3)
- JSP (1)
- HTML (1)
- 数据库 (2)
- HTTP (3)
- MAVEN (2)
- MyBatis (2)
- IDEA (1)
- spring boot (24)
- spring security (1)
- RestEasy (1)
- KAFKA (4)
- MongoDB (2)
- NODEJS (1)
- 非技术 (3)
- logback (1)
- DSL (1)
- thymeleaf (1)
- RedisTemplate (12)
- spring cloud (39)
- fastdfs (1)
- Disruptor (2)
- JAVAFX (1)
- exe4j (1)
- JVM (1)
- ZOOKEEPER (4)
- activiti (1)
- GRADLE (1)
- spring cloud config (7)
- poi (1)
- spring cloud eureka (7)
- Rabbit MQ (1)
- MQ (1)
- Centos (1)
- nifi (1)
- dubbo (1)
最新评论
-
yangganboy:
yangganboy 写道可以看我简书写的 java 运行时修 ...
java动态添加外部jar包到classpath -
yangganboy:
可以看我简书写的 java 运行时修改classpath 添加 ...
java动态添加外部jar包到classpath -
neufjava:
感谢您的分享!参考您的文章解决了困扰我一天的配置问题。再次感谢 ...
FastDFS文件系统的安装使用及代码的调用(单个节点) -
wo_niu:
写的非常
RedisTemplate常用集合使用说明-boundSetOps(九) -
wangyudong:
新版本 Wisdom RESTClienthttps://gi ...
部分介绍使用IDEA的rest client
[size=medium]
摘自http://www.cnblogs.com/devinzhang/archive/2012/01/17/2325092.html
1.概念
HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能:HttpURLConnection。但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。
除此之外,在Android中,androidSDK中集成了Apache的HttpClient模块,用来提供高效的、最新的、功能丰富的支持 HTTP 协议工具包,并且它支持 HTTP 协议最新的版本和建议。使用HttpClient可以快速开发出功能强大的Http程序。
2.区别
HttpClient是个很不错的开源框架,封装了访问http的请求头,参数,内容体,响应等等,
HttpURLConnection是java的标准类,什么都没封装,用起来太原始,不方便,比如重访问的自定义,以及一些高级功能等。
3.案例
URLConnection
HTTPClient
servlet端json转化:
android端接收:
[/size]
摘自http://www.cnblogs.com/devinzhang/archive/2012/01/17/2325092.html
1.概念
HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能:HttpURLConnection。但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。
除此之外,在Android中,androidSDK中集成了Apache的HttpClient模块,用来提供高效的、最新的、功能丰富的支持 HTTP 协议工具包,并且它支持 HTTP 协议最新的版本和建议。使用HttpClient可以快速开发出功能强大的Http程序。
2.区别
HttpClient是个很不错的开源框架,封装了访问http的请求头,参数,内容体,响应等等,
HttpURLConnection是java的标准类,什么都没封装,用起来太原始,不方便,比如重访问的自定义,以及一些高级功能等。
3.案例
URLConnection
String urlAddress = "http://192.168.1.102:8080/AndroidServer/login.do"; URL url; HttpURLConnection uRLConnection; public UrlConnectionToServer(){ } //向服务器发送get请求 public String doGet(String username,String password){ String getUrl = urlAddress + "?username="+username+"&password="+password; try { url = new URL(getUrl); uRLConnection = (HttpURLConnection)url.openConnection(); InputStream is = uRLConnection.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String response = ""; String readLine = null; while((readLine =br.readLine()) != null){ //response = br.readLine(); response = response + readLine; } is.close(); br.close(); uRLConnection.disconnect(); return response; } catch (MalformedURLException e) { e.printStackTrace(); return null; } catch (IOException e) { e.printStackTrace(); return null; } } //向服务器发送post请求 public String doPost(String username,String password){ try { url = new URL(urlAddress); uRLConnection = (HttpURLConnection)url.openConnection(); uRLConnection.setDoInput(true); uRLConnection.setDoOutput(true); uRLConnection.setRequestMethod("POST"); uRLConnection.setUseCaches(false); uRLConnection.setInstanceFollowRedirects(false); uRLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); uRLConnection.connect(); DataOutputStream out = new DataOutputStream(uRLConnection.getOutputStream()); String content = "username="+username+"&password="+password; out.writeBytes(content); out.flush(); out.close(); InputStream is = uRLConnection.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String response = ""; String readLine = null; while((readLine =br.readLine()) != null){ //response = br.readLine(); response = response + readLine; } is.close(); br.close(); uRLConnection.disconnect(); return response; } catch (MalformedURLException e) { e.printStackTrace(); return null; } catch (IOException e) { e.printStackTrace(); return null; } }
HTTPClient
String urlAddress = "http://192.168.1.102:8080/qualityserver/login.do"; public HttpClientServer(){ } public String doGet(String username,String password){ String getUrl = urlAddress + "?username="+username+"&password="+password; HttpGet httpGet = new HttpGet(getUrl); HttpParams hp = httpGet.getParams(); hp.getParameter("true"); //hp. //httpGet.setp HttpClient hc = new DefaultHttpClient(); try { HttpResponse ht = hc.execute(httpGet); if(ht.getStatusLine().getStatusCode() == HttpStatus.SC_OK){ HttpEntity he = ht.getEntity(); InputStream is = he.getContent(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String response = ""; String readLine = null; while((readLine =br.readLine()) != null){ //response = br.readLine(); response = response + readLine; } is.close(); br.close(); //String str = EntityUtils.toString(he); System.out.println("========="+response); return response; }else{ return "error"; } } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); return "exception"; } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); return "exception"; } } public String doPost(String username,String password){ //String getUrl = urlAddress + "?username="+username+"&password="+password; HttpPost httpPost = new HttpPost(urlAddress); List params = new ArrayList(); NameValuePair pair1 = new BasicNameValuePair("username", username); NameValuePair pair2 = new BasicNameValuePair("password", password); params.add(pair1); params.add(pair2); HttpEntity he; try { he = new UrlEncodedFormEntity(params, "gbk"); httpPost.setEntity(he); } catch (UnsupportedEncodingException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } HttpClient hc = new DefaultHttpClient(); try { HttpResponse ht = hc.execute(httpPost); //连接成功 if(ht.getStatusLine().getStatusCode() == HttpStatus.SC_OK){ HttpEntity het = ht.getEntity(); InputStream is = het.getContent(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String response = ""; String readLine = null; while((readLine =br.readLine()) != null){ //response = br.readLine(); response = response + readLine; } is.close(); br.close(); //String str = EntityUtils.toString(he); System.out.println("=========&&"+response); return response; }else{ return "error"; } } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); return "exception"; } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); return "exception"; } }
servlet端json转化:
resp.setContentType("text/json"); resp.setCharacterEncoding("UTF-8"); toDo = new ToDo(); List<UserBean> list = new ArrayList<UserBean>(); list = toDo.queryUsers(mySession); String body; //设定JSON JSONArray array = new JSONArray(); for(UserBean bean : list) { JSONObject obj = new JSONObject(); try { obj.put("username", bean.getUserName()); obj.put("password", bean.getPassWord()); }catch(Exception e){} array.add(obj); } pw.write(array.toString()); System.out.println(array.toString());
android端接收:
String urlAddress = "http://192.168.1.102:8080/qualityserver/result.do"; String body = getContent(urlAddress); JSONArray array = new JSONArray(body); for(int i=0;i<array.length();i++) { obj = array.getJSONObject(i); sb.append("用户名:").append(obj.getString("username")).append("\t"); sb.append("密码:").append(obj.getString("password")).append("\n"); HashMap<String, Object> map = new HashMap<String, Object>(); try { userName = obj.getString("username"); passWord = obj.getString("password"); } catch (JSONException e) { e.printStackTrace(); } map.put("username", userName); map.put("password", passWord); listItem.add(map); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } if(sb!=null) { showResult.setText("用户名和密码信息:"); showResult.setTextSize(20); } else extracted(); //设置adapter SimpleAdapter simple = new SimpleAdapter(this,listItem, android.R.layout.simple_list_item_2, new String[]{"username","password"}, new int[]{android.R.id.text1,android.R.id.text2}); listResult.setAdapter(simple); listResult.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { int positionId = (int) (id+1); Toast.makeText(MainActivity.this, "ID:"+positionId, Toast.LENGTH_LONG).show(); } }); } private void extracted() { showResult.setText("没有有效的数据!"); } //和服务器连接 private String getContent(String url)throws Exception{ StringBuilder sb = new StringBuilder(); HttpClient client =new DefaultHttpClient(); HttpParams httpParams =client.getParams(); HttpConnectionParams.setConnectionTimeout(httpParams, 3000); HttpConnectionParams.setSoTimeout(httpParams, 5000); HttpResponse response = client.execute(new HttpGet(url)); HttpEntity entity =response.getEntity(); if(entity !=null){ BufferedReader reader = new BufferedReader(new InputStreamReader (entity.getContent(),"UTF-8"),8192); String line =null; while ((line= reader.readLine())!=null){ sb.append(line +"\n"); } reader.close(); } return sb.toString(); }
[/size]
发表评论
-
如何保证在Java多线程中的原子性操作?
2019-08-27 18:46 970在单线程的模 ... -
Java内存模型简单介绍
2019-08-19 19:52 829说到Java内存 ... -
java中线程挂起的几种方式
2019-08-16 18:43 1158在Java中使用线程的时候肯定会有线程挂起的 ... -
自定义线程池简单介绍
2019-08-16 11:37 1108线程池的相关概念就不在这里说明了,百度一下有很 ... -
实现自己的spring boot starter
2019-04-04 14:59 950在使用spring boot开发的时候,我 ... -
使用POI实现合并行的导入
2019-03-01 17:24 2755在我们进行导入的时候难免不会遇到合并行的导入 ... -
Spring IOC设计原理解析
2019-01-08 14:02 1073摘自https://www.cnblogs.com/ITt ... -
SpringBoot集成自定义HandlerMethodArgumentResolver参数初始值解析
2018-12-13 09:25 2312大部分摘抄自https://www.cnblogs.com/ ... -
关于spring cloud config加密EncryptionTooWeakException异常说明
2018-11-05 16:00 2172今天在使用spring cloud confi ... -
gradle使用mybatis-generator生成user表相关文件只生成mysql..user的原因说明
2018-07-23 15:42 4226在gradle中使用 ... -
SpringBoot+Activiti的serviceTask注入异常问题
2018-07-13 11:51 7652在使用springboot+activiti ... -
16进制与字符串的互转及转换为byte数组
2018-05-25 14:42 3283import java.io.ByteArrayOutput ... -
JVM学习总结
2018-01-29 17:00 1106JVM作为java的重要组成部分,在j ... -
利用JavaFX创建一个可以订阅发布的MQTT客户端桌面程序
2017-12-08 11:34 2155利用JavaFX我们可以创建出像Swing那样 ... -
java8新特性time类相关介绍
2017-10-30 15:46 1704java8已经出来 ... -
java动态添加外部jar包到classpath
2017-08-17 16:38 3181在项目开发过程中我们有时候需要动态的添加 ... -
java 10进制转16进制带ox格式输出
2017-07-14 16:36 2958摘自https://yq.aliyun.com/wenzha ... -
SpringBoot+thymeleaf简单实现登陆注册及记账功能
2017-06-26 10:58 12575本项目主要是使用了SpringBoot及其 ... -
Java 8的新特性—终极版
2017-05-25 16:42 946前言: Java 8 已经发 ... -
对\\uxx转换为unicode编码的\uxx
2017-03-10 16:17 1533在业务过程中难免会遇到字符串转换为16进制的u ...
相关推荐
java 通用http工具封装 java 通用http工具封装java 通用http工具封装java 通用http工具封装java 通用http工具封装 java 通用http工具封装java 通用http工具封装java 通用http工具封装java 通用http工具封装 java ...
本项目是基于Java语言开发的一套短信发送解决方案,其核心价值在于对CMPP、SGIP、SMGP、SMPP等多种短信协议进行了统一的封装,使得开发者无需深入了解每一种协议的细节,就能够轻松实现短信的发送功能。通过提供简洁...
java 通用http工具封装 java 通用http工具封装java 通用http工具封装 java 通用http工具封装java 通用http工具封装 java 通用http工具封装java 通用http工具封装 java 通用http工具封装java 通用http工具封装 java ...
7. **网络通信**:为了接收和发送hj212协议的数据,开发者可能使用Java的Socket编程或者HTTP客户端库,如HttpURLConnection、Apache HttpClient等,来实现网络连接和数据交换。 8. **异常处理**:在网络通信和数据...
在本文中,我们将深入探讨如何使用Java来实现CoAP(Constrained Application Protocol)协议,这是一种专为物联网(IoT)设备设计的轻量级通信协议。CoAP与HTTP类似,但更加适合资源有限的设备。我们将关注服务器端...
Java实现CMPP协议开发代码主要涉及的是中国移动通信的CMPP(China Mobile Packet ...通过以上分析,Java实现CMPP协议的开发涉及到网络通信、协议解析、HTTP服务、数据处理等多个技术领域,是一个综合性的系统开发项目。
它封装了HTTP协议的细节,使得开发者可以更专注于业务逻辑。 3. **使用OkHttp**:这是一个现代的、高效的HTTP客户端库,由Square公司开发,支持异步请求,有自动重试、连接管理等特性,并且性能优秀。 HTTP协议的...
Java HTTP POST方法是Java编程中用于向Web服务器发送数据的一种常见技术,主要涉及网络编程和HTTP协议。在本文中,我们将深入探讨Java中如何实现HTTP POST请求,理解HTTP POST的工作原理,以及它与GET方法的区别。 ...
HttpClient 是一个成熟的 Java 库,用于执行 HTTP 协议的客户端请求,而 JavaEyeClient 则是对这个库进行了一层封装,简化了开发人员在处理网络请求时的操作。 HttpClient 库允许开发者发送 GET、POST、PUT、DELETE...
在Java编程中,HTTP协议是网络通信的一种标准,常用于客户端与服务器之间的数据交互。XML(eXtensible Markup Language)则是一种结构化数据格式,广泛应用于数据交换、配置文件等场景。本篇文章将深入探讨如何在...
L1接口协议的Java实现涉及到多个知识点,首先是L1接口协议的定义及其在通信行业中的应用背景,其次是Java语言如何被应用于L1接口协议的消息封装和解析,以及HTTP和XML在网络通信中的作用,最后是如何通过端口管理来...
REST(Representational State Transfer,表述性状态转移)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,通过URL定位资源,使用HTTP方法(GET、POST、PUT、DELETE等)操作资源。RESTful接口返回值设计...
基于ijkplayer的Java封装视频播放器是一项通过Java语言对ijkplayer进行了深度封装的视频播放器开发项目。该项目涵盖了丰富的文件类型和数量,共计254个文件,这些文件分别包含了实现视频播放功能所需的各种资源和...
3. **网络通信**:智能交通系统中的数据交换通常基于网络,因此DEMO中可能使用了HTTP、TCP/IP或其他网络协议进行数据传输。可能涉及到的类有Socket、HttpClient等,以及处理JSON或XML数据的库,如Jackson或Gson。 4...
RestFB是一个专门用于简化Facebook API请求的Java封装库。通过使用RestFB,Java开发者能够更加便捷地调用和处理Facebook提供的各种API,包括获取用户资料、发布消息、管理广告、分析数据等。RestFB的核心设计意图是...
由于所有的交互都是基于HTTP协议,开发者可以灵活地调整请求策略,比如添加缓存机制、错误重试、异步处理等。此外,如果极光IM的服务端API发生变化,只需要更新客户端的请求逻辑即可,无需担心SDK升级带来的兼容性...
Https请求工具类,Java实现http请求,https请求 本篇文章将详细介绍如何使用Java语言实现Http和Https请求的工具类,包括如何建立Https连接、如何实现Post请求、如何处理SSL验证等内容。 在Java中,使用...
本Java工具包聚焦于四个核心功能:JavaMail的封装、Google在线翻译的集成、文件I/O操作的封装以及DOM4J对XML的处理。以下将详细阐述这些知识点。 1. **JavaMail**:JavaMail是Java平台上的一个开源库,用于处理电子...
它提供了丰富的API,使得开发者能更方便地构建TCP、UDP、HTTP、FTP等协议的服务器和客户端。在本项目中,我们将利用Netty来构建TCP服务器,处理DTU发送过来的数据。 1. **Netty基础架构**: Netty的核心组件包括...
Java HTTP方式封装极光推送是一种轻量级的实现方式,它摒弃了传统的SDK集成,而是通过HTTP协议直接与极光推送服务器进行交互。这种方式有以下几个显著的优点: 1. **体积小**:不使用极光推送的SDK,避免引入额外的...