调用https协议接口获取不到数据,代码如下
 /**
     * 关键字查询商品,无分享赚
     * @param searchKey
     * @param pageIndex
     * @param pageSize
     * @return
     */
    @ResponseBody
    @RequestMapping(value="goodsListPlus",method = RequestMethod.POST)
    public String goodsListPlus(String searchKey,String pageIndex,String pageSize){
        String searchUrl="https://xxx/qwd_searchitem_ex?g_tk=200330352&pageindex="+pageIndex+"&pagesize="+pageSize+"&key="+searchKey+"&uniquespu=1&storestatus=1&ie=utf-8&text="+searchKey+"&_=1513671972404";
        String resultStr=httpsRequest(searchUrl, "GET", null,null);
        System.out.println("---处理前结果---"+resultStr);

        if(null!=resultStr &&!"".equals(resultStr)){
            ProductResult result = JSON.parseObject(resultStr, ProductResult.class);

            List<ProductInfo> productInfos = result.getSku();
            List<ProductInfo> tempInfos = new ArrayList<ProductInfo>();
            ProductResult tempResult = new ProductResult();
            if (null!=productInfos && !productInfos.isEmpty()) {
                for (int i = 0; i < productInfos.size(); i++) {
                    ProductInfo productInfo = new ProductInfo();
                    productInfo = productInfos.get(i);
                    tempInfos.add(productInfo);
                }
                tempResult.setSku(tempInfos);
                tempResult.setErrCode(result.getErrCode());
                tempResult.setMsg(result.getMsg());
                tempResult.setRetCode(result.getRetCode());
                tempResult.setSize(result.getSize());

                resultStr = JSON.toJSONString(tempResult);

                System.out.println("处理后结果---"+resultStr);
            }
        }


        return resultStr;
    }
    /*
     * 处理https GET/POST请求
     * 请求地址、请求方法、参数
     * */
    public static String httpsRequest(String requestUrl,String requestMethod,String outputStr,String cookie){
        StringBuffer buffer=null;
        try{
        //创建SSLContext
        SSLContext sslContext=SSLContext.getInstance("SSL");
        TrustManager[] tm={new MyX509TrustManager()};
        //初始化
        sslContext.init(null, tm, new java.security.SecureRandom());
        //获取SSLSocketFactory对象
        SSLSocketFactory ssf=sslContext.getSocketFactory();
        URL url=new URL(requestUrl);
        HttpsURLConnection conn=(HttpsURLConnection)url.openConnection();
        conn.setDoOutput(true);
        conn.setDoInput(true);
        conn.setUseCaches(false);
        conn.setRequestMethod(requestMethod);
        if (null!=cookie) {
            conn.setRequestProperty("Cookie", cookie);
        }
        //设置当前实例使用的SSLSoctetFactory
        conn.setSSLSocketFactory(ssf);
        conn.connect();
        //往服务器端写内容
        if(null!=outputStr){
            OutputStream os=conn.getOutputStream();
            os.write(outputStr.getBytes("utf-8"));
            os.close();
        }

        //读取服务器端返回的内容
        InputStream is=conn.getInputStream();
        InputStreamReader isr=new InputStreamReader(is,"utf-8");
        BufferedReader br=new BufferedReader(isr);
        buffer=new StringBuffer();
        String line=null;
        while((line=br.readLine())!=null){
            buffer.append(line);
        }
        is.close();
        isr.close();
        br.close();
        }catch(Exception e){
            e.printStackTrace();
        }
        return buffer.toString();
    }


0

2个回答

ublic static CloseableHttpClient createSSLClientDefault(){
try {
SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
//信任所有
public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException {
return true;
}
}).build();
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext);
return HttpClients.custom().setSSLSocketFactory(sslsf).build();
} catch (KeyManagementException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyStoreException e) {
e.printStackTrace();
}
return HttpClients.createDefault();
}

0
tomcat_zhu
zhuzhihongNO1 感谢感谢,非常感谢您!
一年多之前 回复
tomcat_zhu
zhuzhihongNO1 然后呢?
一年多之前 回复

在socket里面获取数据

0
tomcat_zhu
zhuzhihongNO1 能详细点吗
一年多之前 回复
tomcat_zhu
zhuzhihongNO1 ????????
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
访问https接口,进行数据交互(已在实际项目中使用)
前言:        在android开发中,会涉及到安全比较高的业务,比如银行,网上交易等,这就涉及到https协议的交互      对于https 交互过程分两个阶段      1. 客户端获取服务器的证书,并验证证书的内容是否可信       2. 客户端和服务器端进行握手协议,并进行数据传输          对于https 交互过程,第一点,采用了网站可信的方式,如有需要验证
Java中后台通过Post方式连接HTTPS获取返回的值
很多时候,我们要通过Java中的jsse来发送post请求给https,然后获取返回的值. 下面就是一个可以使用的源码. import java.io.*; import java.net.*; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; impo
java调用https接口报错
调用第三方https接口,在本地测试没问题,将项目提交到测试环境怎么都掉不通,报如下错误:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilder
webservice:客户端调用https接口
1.背景介绍 因为项目当中用到了webservice接口,并且提供了一个公网地址给调用方使用,但是调用方在调用的时候一直报错,错误如下。 这个错误的原因是: 302 Found 是HTTP协议中的一个状态码(Status Code),可以简单的理解为该资源原本确实存在,但已经被临时改变了位置;或者换个说法,就是临时的存在于某个临时URL下。通常会发送Header来暂时重定向到
【HTTPS、HTTP】网易新闻首页https跨协议调用http的问题
今天在上班的时候,朋友忽然给我发消息让看下网易新闻的首页,于是我打开百度,输入“网易新闻”,然后点开了百度推荐的第一条: 网页排版是乱的,这种问题一看就是CSS文件没加载出来。 朋友:你说,这是网络原因还是他们(网易)网站出问题了? 我:一般出现这种情况,要么是本地浏览器缺少加载CSS的插件,要么就是网站有问题。本机访问新浪新闻正常显示,说明我浏览器没有问题。 ...
http、https调用json接口必要包
包含commons-beanutils.jar、commons-collections.jar、commons-lang.jar、commons-logging-1.1.1.jar、ezmorph-1.0.5.jar、json-lib-2.4-jdk15.jar 使用HttpURLConnection、HttpsURLConnection 以JSON形式传递数据所必须的包
nginx反向代理走http+https通道,后端走http通道,导致前台获取不到后台https内容的处理
前言: 目前我公司使用的服务器架构为前台为nginx反向代理,后端为单台web服务器或者集群,目前的配置是这样的,nginx反向代理配置了,http和https通道,但是后端服务器配置为http通道。 平时没有什么大问题,后来用户访问网站的时候,访问https,发现代码中引用的url为http,因此获取不到网页内容。 配置内容: 前台nginx反向代理配置 server { liste...
用http和https请求进行访问数据
首先,我是用tomcat作为服务器,默认https不开启,需要自行设置,参考http://blog.csdn.net/w_liujun/article/details/41541267 和参考的文章一样,使用8443端口,需要在tomcat-conf-server.xml进行配置。 <Connector port="8443" protocol="org.apache.coyote.http1
php的curl获取https加密协议请求返回json数据进行信息获取
header("Content-type:text/html; charset=utf-8"); function getToken($url){         $ch = curl_init();  curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);   //相当关键,这句话是
spring boot 提供HTTP、HTTPS都可访问的API
情景说明 考虑到数据的安全传输,现在用到HTTPS进行API调用的越来越多了。本节就介绍如何使自己编写的API能让别人 进行HTTP、HTTPS调用。 先看一下一般情况 正常编写一个 使用HTTP访问一下(不写的话,默认使用HTTP协议进行访问) 由此可见:HTTP是可以访问的,那么HTTPS呢? 由此可见,此时HTTPS是无法访问的! 软硬件环境:JDK1.8、Wi...
java代码使用https访问接口
package oauthDemo; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; imp
Android访问Https协议的接口
Android客户端访问Https接口
http页面执行https跨协议请求的解决办法
有时候,我们需要在弹层中使用跨域跨协议去访问某个服务器获取视图,楼主就在项目中遇到了这个问题。在一次pos机项目的开发中需要访问我公司不同项目的服务器,我们两个部门的域名、协议都是不一样的。我需要在https协议下去访问不同域名的http协议地址,当然在浏览器新开一个窗口(window.open(“http://”))就不会有问题,但是这在ajax的回调函数中弹窗使用就遇到了很大麻烦。要支持跨域的弹
fiddler抓取火狐浏览器上https协议请求
转自:https://www.cnblogs.com/weizhideweilai/p/7763900.html 前言:现在很多网站采用https协议,当打开fiddler时。浏览https协议的网站会提示不安全,若使用fiddler抓取https协议的请求,则需要向浏览器导入证书,才能抓取https协议的请求,进行分析 1、下载fiddler 下载最新版的fiddler,网站 http...
tomcat+https协议的接口编写及客户端访问
https协议的接口编写及客户端访问
使用fiddler抓取HTTPS协议数据与疑难杂症终极解决方案
作者:韦玮 转载请注明出处 常规设置: Fiddler默认只能抓取HTTP协议的网页,不能抓取HTTPS协议的网页,而我们很多时候,都需要抓HTTPS协议的网页,比如抓淘宝数据等。今天,韦玮老师会为大家讲解如何使用Fiddler抓取HTTPS协议的网页。 打开Fiddler,点击“Tools--Fiddler Options--HTTPS”,把下方的全勾上,如下图所示:
提供HTTP、HTTPS都可访问的API
情景说明: 考虑到数据的安全传输,现在用到HTTPS进行API调用的越来越多了。本节就介绍如何使自己编写的API能让别人 进行HTTP、HTTPS调用。 先看一下一般情况:正常编写一个 使用HTTP访问一下(不写的话,默认使用HTTP协议进行访问) 由此可见:HTTP是可以访问的,那么HTTPS呢? 由此可见,此时HTTPS是无法访问的! 软硬件环境:JDK1.8...
NodeJS如何发送HTTPS请求
微信的接口都使用HTTPS协议,使用NodeJS需创建HTTPS对象. 详细使用参考官网文档https://nodejs.org/api/https.html 代码如下: var https = require("https"); var iconv = require("iconv-lite"); var url="https://api.weixin.qq.com/sns/o
Https接口调用
背景:调用第三方提供的https类型的接口。推荐工具类:https://gitee.com/pmaxyt/codes/0zcigjya2vsumlk4135rn46调用实例:Map&amp;lt;String,String&amp;gt; createMap = new HashMap&amp;lt;String,String&amp;gt;(); createMap.put(&quot;username&quot;,&quot;fkg&quot;); createM...
java 通过HttpsUrlConnection访问接口数据
[code=&quot;yml&quot;] server: ssl: key-store: classpath:key/rsakey.jks key-store-password: 123456 key-store-type: JKS key-alias: tomcatjks urls: /* port: 8443 non-ssl-port: 8...
【Java】调用http接口获取数据
方法如下:import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; /** * Created by yl1794 on 2018/5/16. */ public class getHttpInterface ...
https与SSL协议详解及Java实现免证书访问https服务代码
https与SSL协议详解及Java实现免证书访问https服务代码 tomcat提供https服务接口方法
JAVA利用HttpClient进行HTTPS接口调用
JAVA利用HttpClient进行HTTPS接口调用
JAVA中 如何访问https链接的网站或者接口
在日常开发中,我们访问的链接接口一般都是http,但是现在为了数据在传输过程中的安全,很多网站或者接口都升级为https,那么我们以前的接口如何在改动不大的情况下也能够支持呢?本篇主要讲解JAVA如何在https下应用访问接口,代码1 package com.https.test.url; import java.io.IOException; import java.io.InputStrea...
https跨域请求http数据
A站:https://www.aaa.comB站:http://www.bbb.com直接用ajax跨域请求返回数据因为不是https协议网站 ( B站没有https证书 ) 返回的数据或资源所以会被A站拦截阻挡,自己想到解决办法写一个API做中转数据,在A站内些一个接口,A站利用ajax去请求接口,再有接口模拟请求B站获取数据到API接口,然后再返回到A站ajax直接上代码A站ajax请求 $....
抓取APP中https数据
抓取 APP 中 https 数据fiddler 抓取 APP 中 https 数据fiddler 抓取 APP 中 https 数据需要以下几点配置:1. 生成证书2. 允许远程电脑连接更具地的请参见http://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/DecryptHTTPS3. 手机端设置由于我抓取的是 Android 配置传送门 C
Postman调用http接口如何设置
[size=medium][color=green][b]输入HTTP URL 1,Authorization里面有 Type,我们的远程接口由于采用的是 HTTP Basic Authentication ,所以Type:Basic Auth 2,Headers content-type:application/json 点击Authorization 输入Usernam...
百度统计接口调用——获取站点访问数据
百度统计接口调用三步:调用登录接口获取ucid调用站点查询列表获取站点列表(每个站点都具有一个siteId)调用站点访问接口通过siteId查询访问数据 /**  * 查询站点数据  * @param user 用户  * @param siteId  站点ID  * @param startDate 开始时间  * @param endDate 结束时间  * @author sh...
使用utf-8编码调用https接口
客户端 SSLClient.java package com.ultrapower.cmppserver.sms.impl.hemessage; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import javax.net.ssl.SSLContex...
HTTPClient 4.5 调用https协议的接口
package com.ysmall.util; import org.apache.commons.collections.MapUtils; import org.apache.http.*; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.Htt...
使用nginx作为反向代理解决前后端分离时前端https,后端http造成访问无法被加载
最近公司要开发一个项目,移动端,web端,微信小程序.起初我们使用全部是http协议,前后端分离,使用nginx作为静态资源服务器,这种部署方式很常见,网上都可以搜的到.后来因为要让百度搜索录入词条,审核必须是https的网站,于是使用ssl证书申请了https,上一篇博客里面有介绍.至此静态资源都可以正常走https访问!但是,如果和后端做交互,发送ajax请求或者要获取http资源的时候,就会...
Python调用基于https协议的WebService
 Python调用基于https协议的WebService 近年的Web开发,很多接口数据交换通常倾向于使用json格式作为数据源,相对WebService来说,json有轻量,容易使用在Ajax程序和移动App中的优点。但是最近在开发一个对安全性要求相对较高的应用时,第三方的接口是基于https的WebService,并要求对提交的数据进行签名。对方使用的是java,一开始我想直接就
php curl获取https页面内容, 不直接输出返回结果的设置
使用php curl获取页面内容或提交数据, 有时候希望返回的内容作为变量储存, 而不是直接输出.方法:设置curl的CURLOPT_RETURNTRANSFER选项为1或true.eg:$url = 'http://www.baidu.com';$ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLO
.NET获取聚合数据接口数据(Http协议POST和GET请求)
今天给大家一个小栗子,就是利用.NET访问聚合数据接口,之前有总结过Android端得~
调用https协议的webservice,以及证书手动加载
调用https协议的webservice,以及证书手动加载。
https和http协议接口post请求接口方法
一、只针对http 的post请求 package test; import java.io.InputStreamReader; import java.net.URI; import net.sf.json.JSONObject; import org.apache.http.Header; import org.apache.http.HttpEnti
c++ 使用curl发送https POST请求并获取返回数据(包含appKey与appSecret)
借鉴连接:https://yq.aliyun.com/articles/629830?spm=a2c4e.11153940.blogcont630369.18.3dca5d3c1QHa9l 使用到libcurl库及openssl, 用VS2015写了个demo,记录一下,demo下载链接在文章末尾。 直接上代码: #include &lt;iostream&gt; #include &l...
调用https接口的工具类
//string数组没有的话,就为null public static String httpsPost(String url, String code,             String[][] propertys, String content)     {         String ret = "";         HttpsURLConnection connect
前端请求接口无法自动获取cookie
#前端请求接口无法自动获取cookie的一次惨痛经历 太惨了,一个小问题从来没有遇见呢,突然遇见。无法自动获取cookie。 红框内二者缺一不可就可以解决。耗费了我一会时间。真是难过。 ...
【JAVA WEB】使用HTTPS请求外部接口
如何使用HTTPS请求外部接口。
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 深度学习ufldl教程教程如下 区块链协议