当前位置: 首页 > news >正文

管局审核网站名称兰州市住房和城乡建设局官网

管局审核网站名称,兰州市住房和城乡建设局官网,刀客源码,男生专属浏览器用Java发送web请求所用到的包都在java.net下#xff0c;在具体使用时可以用如下代码#xff0c;你可以把它封装成一个工具类 import javax.net.ssl.*; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.Outpu…用Java发送web请求所用到的包都在java.net下在具体使用时可以用如下代码你可以把它封装成一个工具类 import javax.net.ssl.*; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.security.SecureRandom; import java.security.cert.CertificateException; import java.security.cert.X509Certificate;public class Testt {/*HostnameVerifier 是一个Java接口其中的verify方法用来在下面的类中提供主机名的SSL校验这里个人用不做具体校验所有的主机名都给过*/final static HostnameVerifier DO_NOT_VERIFY new HostnameVerifier(){public boolean verify(String arg0, SSLSession arg1) {return true;}};/*trustAllHosts方法 方法创建了一个 TrustManager 接口的匿名实现它是用来检查证书的无论是服务器证书还是客户端证书这通过重写 checkServerTrusted 和 checkClientTrusted 方法为空 不做任何检查*/public static void trustAllHosts() {TrustManager[] trustAllCerts new TrustManager[] {new X509TrustManager(){public X509Certificate[] getAcceptedIssuers() {return new X509Certificate[] {};}public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {}public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {}}};/*SSLContext 使用上述的 TrustManager 初始化一个 SSLContext 实例并将其设置为 HttpsURLConnection 的默认 SSLSocketFactory这允许 HttpsURLConnection 信任所有SSL证书TLS是握手协议的一种*/try {SSLContext sc SSLContext.getInstance(TLS);sc.init(null, trustAllCerts, new SecureRandom());HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());}catch (Exception e) {e.printStackTrace();}}/*** 发出请求的具体方法* param urlPath https协议接口的路径 https://xxxxxx* param Json 发出请求需要携带的参数需要是Json格式* return*/public static String doPostToJson(String urlPath, String Json) {String result ;BufferedReader reader null;HttpURLConnection conn null;try {/*掉用上面的静态方法使得请求发出时作为调用者的我们对服务端所拥有的任何https证书都是兼容的这里说一句题外话一般情况下作为接口使用者trustAllHosts方法里面的代码是不变的因为你作为使用者总没道理说让人家服务端兼容你什么除非你是证书的使用者不过这种情况会有证书厂商告诉你如何做不得不说厂商服务是个好东西*/trustAllHosts();URL url new URL(urlPath);/*如果协议是 https则使用 HttpsURLConnection 并设置 HostnameVerifier 为 DO_NOT_VERIFY。否则使用 HttpURLConnection*/if (url.getProtocol().toLowerCase().equals(https)) {HttpsURLConnection httpsConn (HttpsURLConnection) url.openConnection();httpsConn.setHostnameVerifier(DO_NOT_VERIFY);conn httpsConn;}else {conn (HttpURLConnection) url.openConnection();}// 设置请求以POST形式发出conn.setRequestMethod(POST);// 是否携带请求提POST和GET请求必须为trueconn.setDoOutput(true);// 是否会获取服务端的响应默认是trueconn.setDoInput(true);//禁用缓存conn.setUseCaches(false);// Keep-Alive告诉服务端对已有的TCP连接保持一定时间的活性以保障后续发出的请求不需要建立新的TCP连接从而减少网络开销conn.setRequestProperty(Connection, Keep-Alive);//字符集这个配置不是标准的请求头但是有些妖孽系统会读取这个conn.setRequestProperty(Charset, UTF-8);// 这个是请求格式告诉服务端这个请求发送的是Json数据以及字符集conn.setRequestProperty(Content-Type, application/json; charsetUTF-8);// 告诉服务端相应格式也希望是json格式conn.setRequestProperty(accept, application/json);//如果参数不为空则将参数以字节数流的方式写入请求体里面if (Json ! null) {byte[] writebytes Json.getBytes();conn.setRequestProperty(Content-Length, String.valueOf(writebytes.length));OutputStream outwritestream conn.getOutputStream();outwritestream.write(Json.getBytes());outwritestream.flush();outwritestream.close();}//读取响应相应数据也是一个jsonif (conn.getResponseCode() 200) {reader new BufferedReader(new InputStreamReader(conn.getInputStream(), utf-8));result reader.readLine();}}catch (Exception e) {e.printStackTrace();}finally {//读取相应用的输入流需要在这里关闭而写入请求参数的输出流是随用随关的if (reader ! null) {try {reader.close();conn.disconnect();}catch (IOException e) {e.printStackTrace();}}}return result;}}对于上面的代码重点要说明的第一点是HostnameVerifier接口提供的方法它主要用于访问https协议下的接口时验证当前已和你建立连接的hostname主机名和连接的SSLSessionSSL会话证书是否匹配防止中间人攻击比如可以如下操作 import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLSession; import java.io.IOException; import java.net.URL;public class HostnameVerifierExample {public static void main(String[] args) {try {// 创建一个URL对象URL url new URL(https://xxxxx);// 打开HTTPS连接HttpsURLConnection connection (HttpsURLConnection) url.openConnection();// 设置自定义的HostnameVerifierHostnameVerifier customVerifier new HostnameVerifier() {Overridepublic boolean verify(String hostname, SSLSession session) {// 在这里实现你的验证逻辑// 例如你可以比较hostname和session中的证书信息// 为了简单起见这里我们直接接受任何主机名不推荐这样做有安全风险// 在实际应用中你应该根据你的安全策略来实现这个逻辑// 比如你可以检查hostname是否与你预期的服务器主机名匹配// 或者你可以使用HttpsURLConnection.getDefaultHostnameVerifier()来获取默认的验证器并基于它的结果进行扩展// 这是一个不安全的示例仅用于说明如何使用verify方法// 在实际应用中你应该避免这样做return true; // 更安全的做法可能是这样的// if (expected.hostname.equals(hostname)) {// return true;// } else {// HostnameVerifier defaultVerifier HttpsURLConnection.getDefaultHostnameVerifier();// return defaultVerifier.verify(hostname, session);// }}};// 设置自定义的HostnameVerifier到连接中connection.setHostnameVerifier(customVerifier);// 继续处理HTTPS连接比如读取响应等// ...// 关闭连接connection.disconnect();} catch (IOException e) {e.printStackTrace();}} }第二是trustAllHosts方法里面的东西,TrustManager是用来实现证书验证的类X509TrustManager是X.509 证书的验证实现通俗的讲是一个基础的证书因此我上面的代码中也说了如果你是正式的https证书使用者会有厂商服务告诉你怎么验证证书在X509TrustManager 中提供了三个方法 getAcceptedIssuers()返回此信任管理器接受的发行者证书根证书或中间证书数组。在上面的代码中这个方法返回了一个空数组意味着它不做任何特定的发行者证书获取checkServerTrusted(X509Certificate[] certs, String authType)验证服务器提供的证书链是否可信。在代码中这个方法被空实现了意味着不会进行任何验证。checkClientTrusted(X509Certificate[] certs, String authType)验证客户端提供的证书链是否可信在需要客户端证书的情况下。同样在代码中这个方法也被空实现了
http://www.hkea.cn/news/14346802/

相关文章:

  • 建设网站去工信部备案需要什么资料深圳网站建设公司元
  • 谁知道做网站的电话免费注册一个网站
  • 现在建网站可以赚钱吗设计公司和企业的区别
  • 比较出名的wordpress网站企业信息公示管理系统广东
  • 仿qq网站程序濮阳开公司怎么找客户
  • 没有经验可以做网站编辑吗做seo有什么好处
  • 上海网站开发哪家好薇o2o是什么意思啊
  • 企业为什么做企业网站和推广西安网络科技有限公司
  • 中国建设银行网站用户是什么怎么样做网站赚钱吗
  • 物流网站建设案例爱站网源码
  • 网站建设销售在哪找客户手机电脑版下载软件
  • 内蒙古城乡建设和住房建设厅网站张家港百度网站制作
  • 开发商交房需要提供哪些证书网站优化怎么看
  • 什么叫做网站建设那个网站平台可以做兼职
  • iis7新建网站宁波网站建设公司哪个好
  • 广州哪里做网站杭州城市建设网站
  • 龙岩网站设计理念附近的招聘工作
  • 中山网站建设中山廊坊专业网站网站
  • 网站建设技术开发小黄豆crm
  • 平台直播怎么看一个网站谁做的优化
  • 中山营销型网站可以做公众号背景图的网站
  • 建设银行官方网站 诚聘英才河南海绵城市建设网站
  • 深圳专业网站建设公司排名wordpress 摘要插件
  • 汕头网站开发jsp做的网站怎嘛用
  • 山东网站设计公司上海cms模板建站
  • dw制作简单网站模板下载地址百度云app下载安装
  • 深圳哪家网站建设公司好宁波做网站价格
  • 中小企业建网站哪个好长春怎么做网站
  • 一流的龙岗网站设计wordpress程序员
  • 外贸网站排行榜前十名wordpress如何导入附件