java请求https的简单介绍

华为云服务器特价优惠火热进行中!

2核2G2兆仅需 38 元;4核4G3兆仅需 79 元。购买时间越长越优惠!更多配置及优惠价格请咨询客服。

合作流程:
1、点击链接注册/关联华为云账号:点击跳转
2、添加客服微信号:cloud7591,确定产品方案、价格方案、服务支持方案等;
3、客服协助购买,并拉微信技术服务群,享受一对一免费技术支持服务;
技术专家在金蝶、华为、腾讯原厂有多年工作经验,并已从事云计算服务8年,可对域名、备案、网站搭建、系统部署、AI人工智能、云资源规划等上云常见问题提供更专业靠谱的服务,对相应产品提供更优惠的报价和方案,欢迎咨询。

本篇文章给大家谈谈java请求https,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

微信号:cloud7591
如需了解更多,欢迎添加客服微信咨询。
复制微信号

本文目录一览:

求解java怎样发送https请求

使用httpClient可以发送,具体的可以参考下面的代码

SSLClient类,继承至HttpClient

import java.security.cert.CertificateException;

import java.security.cert.X509Certificate;

import javax.net.ssl.SSLContext;

import javax.net.ssl.TrustManager;

import javax.net.ssl.X509TrustManager;

import org.apache.http.conn.ClientConnectionManager;

import org.apache.http.conn.scheme.Scheme;

import org.apache.http.conn.scheme.SchemeRegistry;

import org.apache.http.conn.ssl.SSLSocketFactory;

import org.apache.http.impl.client.DefaultHttpClient;

//用于进行Https请求的HttpClient

public class SSLClient extends DefaultHttpClient{

public SSLClient() throws Exception{

        super();

        SSLContext ctx = SSLContext.getInstance("TLS");

        X509TrustManager tm = new X509TrustManager() {

                @Override

                public void checkClientTrusted(X509Certificate[] chain,

                        String authType) throws CertificateException {

                }

                @Override

                public void checkServerTrusted(X509Certificate[] chain,

                        String authType) throws CertificateException {

                }

                @Override

                public X509Certificate[] getAcceptedIssuers() {

                    return null;

                }

        };

        ctx.init(null, new TrustManager[]{tm}, null);

        SSLSocketFactory ssf = new SSLSocketFactory(ctx,SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

        ClientConnectionManager ccm = this.getConnectionManager();

        SchemeRegistry sr = ccm.getSchemeRegistry();

        sr.register(new Scheme("https", 443, ssf));

    }

}

HttpClient发送post请求的类

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

import java.util.Map.Entry;

import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.NameValuePair;

import org.apache.http.client.HttpClient;

import org.apache.http.client.entity.UrlEncodedFormEntity;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.message.BasicNameValuePair;

import org.apache.http.util.EntityUtils;

/*

 * 利用HttpClient进行post请求的工具类

 */

public class HttpClientUtil {

public String doPost(String url,MapString,String map,String charset){

HttpClient httpClient = null;

HttpPost httpPost = null;

String result = null;

try{

httpClient = new SSLClient();

httpPost = new HttpPost(url);

//设置参数

ListNameValuePair list = new ArrayListNameValuePair();

Iterator iterator = map.entrySet().iterator();

while(iterator.hasNext()){

EntryString,String elem = (EntryString, String) iterator.next();

list.add(new BasicNameValuePair(elem.getKey(),elem.getValue()));

}

if(list.size()  0){

UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list,charset);

httpPost.setEntity(entity);

}

HttpResponse response = httpClient.execute(httpPost);

if(response != null){

HttpEntity resEntity = response.getEntity();

if(resEntity != null){

result = EntityUtils.toString(resEntity,charset);

}

}

}catch(Exception ex){

ex.printStackTrace();

}

return result;

}

}

测试代码

import java.util.HashMap;

import java.util.Map;

//对接口进行测试

public class TestMain {

private String url = "";

private String charset = "utf-8";

private HttpClientUtil httpClientUtil = null;

public TestMain(){

httpClientUtil = new HttpClientUtil();

}

public void test(){

String httpOrgCreateTest = url + "httpOrg/create";

MapString,String createMap = new HashMapString,String();

createMap.put("authuser","*****");

createMap.put("authpass","*****");

createMap.put("orgkey","****");

createMap.put("orgname","****");

String httpOrgCreateTestRtn = httpClientUtil.doPost(httpOrgCreateTest,createMap,charset);

System.out.println("result:"+httpOrgCreateTestRtn);

}

public static void main(String[] args){

TestMain main = new TestMain();

main.test();

}

}

java https请求 中文乱码问题

尝试的方法:

1. 在服务端接收到参数时,utf-8转gbk,无效。

2. 在服务端接收到参数时,iso-8859-1转gbk,无效。

3. 在发送请求前将中文参数转码,utf-8转iso-8859-1,无效。代码如下:

new String(remark.getBytes(“UTF-8”), “ISO-8859-1”)

4. 在请求端,HttpHeader设定ContentType为“application/json;UTF-8”,无效。代码如下:

headers.setContentType(Media.valueOf(“application/json;UTF-8”));

写到这里,有人应该感觉到这有点“病急乱投医”的感觉了,没有头绪地在试着各种方式。是的,起初我觉得是请求header中采用了ISO-8859-1的编码,但尝试后很显然不是;后来我觉着是否是RestTemplate中采用的HttpMessageConverter方式所决定的,但没能找到很好的证明方式,查资料说的是StringHttpMessageConverter默认采用的是ISO-8859-1编码,可我觉得我指定了ContentType为application/json,RestTemplate不应该去调用StringHttpMessageConverter啊,其中的原理还有待深究。个人感觉这种情况出问题的可能性最大。

最后,在网上看到一篇文章后,看了一种建议方式,并且是可行的,就是使用URLEncode,将中文参数在传参前进行encode.这里以GBK编码是为了在服务器端接收参数后无需再转码了,如下:

list.add(URLEncode.encode(name, “GBK”));

URLEncode方式可以解决这种特定场景的中文乱码问题,相信理解其原理后还可以运用到更多的场景。目前我在网上看到的,关于用URLEncode处理中文乱码最多的场景就是文件下载时中文文件名乱码。

如何在java中发起http和https请求

1.写http请求方法

[java] view plain copy

//处理http请求 requestUrl为请求地址 requestMethod请求方式,值为"GET"或"POST"

public static String httpRequest(String requestUrl,String requestMethod,String outputStr){

StringBuffer buffer=null;

try{

URL url=new URL(requestUrl);

HttpURLConnection conn=(HttpURLConnection)url.openConnection();

conn.setDoOutput(true);

conn.setDoInput(true);

conn.setRequestMethod(requestMethod);

conn.connect();

//往服务器端写内容 也就是发起http请求需要带的参数

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);

}

}catch(Exception e){

e.printStackTrace();

}

return buffer.toString();

}

关于java请求https和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

发布于 2023-04-07 10:04:03
收藏
分享
海报
32
目录

    忘记密码?

    图形验证码

    复制成功
    微信号: cloud7591
    如需了解更多,欢迎添加客服微信咨询。
    我知道了