Java获取http和https协议返回的json数据
java 根据上下文获取请求头的方法

java 根据上下文获取请求头的方法Java中通过HttpServletRequest对象可以获取请求头信息。
具体来说,可以使用HttpServletRequest的getHeader()方法来获取指定请求头的值。
下面将详细介绍如何在Java中通过HttpServletRequest对象获取请求头信息。
步骤一:获取HttpServletRequest对象在Java中,处理HTTP请求需要使用Servlet。
在Servlet中,可以通过doGet()或doPost()等方法来处理请求。
在这些方法中,可以通过HttpServletRequest 对象来获取请求头信息。
通常,HttpServletRequest对象作为这些方法的参数之一。
例如,在doGet()方法中,可以通过以下代码获取HttpServletRequest对象:javaprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {HttpServletRequest req = (HttpServletRequest) request;获取其他请求头信息}步骤二:获取指定请求头的值在获取到HttpServletRequest对象后,可以使用getHeader()方法来获取指定请求头的值。
getHeader()方法接收一个字符串参数,表示要获取的请求头名称。
该方法返回一个字符串,表示对应请求头的值。
例如,要获取名为"User-Agent"的请求头的值,可以使用以下代码:javaprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {HttpServletRequest req = (HttpServletRequest) request;String userAgent = req.getHeader("User-Agent");处理获取到的请求头的值}在以上示例中,使用req.getHeader("User-Agent")可以获取到使用该请求的浏览器或客户端的相关信息。
Java调用HttpHttps接口(1)--编写服务端

Java调⽤HttpHttps接⼝(1)--编写服务端 Http接⼝输⼊的数据⼀般是键值对或json数据,返回的⼀般是json数据。
本系列⽂章主要介绍Java调⽤Http接⼝的各种⽅法,本⽂主要介绍服务端的编写,⽅便后续⽂章⾥的客户端的调⽤。
⽂中所使⽤到的软件版本:Java 1.8.0_191、SpringBoot 2.2.1.RELEASE。
1、服务端Controllerpackage com.inspur.demo.http.server;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.multipart.MultipartFile;import mon.entity.CallResult;import mon.util.FileUtil;import er;@Controller@RequestMapping(value="/httptest/", method = {RequestMethod.GET, RequestMethod.POST})public class HttpTestController {private static Logger logger = LoggerFactory.getLogger(HttpTestController.class);@RequestMapping(value = "getUser", produces = "application/json;charset=UTF-8")@ResponseBodypublic CallResult<User> getUser(String userId, String userName) {("userId={},userName={}", userId, userName);User user = new User();user.setUserId(userId);user.setUserName(userName);CallResult<User> result = new CallResult<User>(0, "OK", user);return result;}/*** 传⼊json* @param user* @return*/@RequestMapping("addUser")@ResponseBodypublic CallResult<User> addUser(@RequestBody User user) {(user.toString());CallResult<User> result = new CallResult<User>(0, "OK", user);return result;}/*** 上传⽂件* 这种⽅式不适合页⾯form表单上传⽂件,适合客户端调⽤* @param request* @return*/@RequestMapping(value = "upload", produces = "application/json;charset=UTF-8")@ResponseBodypublic CallResult<String> upload(HttpServletRequest request) {InputStream in = null;OutputStream out = null;CallResult<String> result = new CallResult<String>(0, "OK", "上传成功");try {in = new BufferedInputStream(request.getInputStream(), 16 * 1024);//假设上传的就是jpg⽂件String fileName = "d:/temp/upload_" + System.currentTimeMillis() + ".jpg";out = new BufferedOutputStream(new FileOutputStream(fileName), 16 * 1024);byte[] buffer = new byte[16 * 1024];int len = 0;while ((len = in.read(buffer)) != -1) {out.write(buffer, 0, len);}} catch (Exception e) {result = new CallResult<String>(-1, "发⽣异常", "");e.printStackTrace();} finally {FileUtil.close(in);FileUtil.close(out);}("upload返回结果:{}", result);return result;}/*** 上传⽂件及发送键值对数据* @param file* @param param1* @param param2* @return*/@RequestMapping("multi")@ResponseBodypublic CallResult<String> multi(@RequestParam("file") MultipartFile file, String param1, String param2) { ("file={},param1={},param2={}", file.getOriginalFilename(), param1, param2);InputStream in = null;OutputStream out = null;CallResult<String> result = new CallResult<String>(0, "OK", "上传成功");try {in = new BufferedInputStream(file.getInputStream(), 16 * 1024);String originalFilename = file.getOriginalFilename();//ie上传⽂件该值是全路径,处理下if (originalFilename.indexOf("\\") > -1) {originalFilename = originalFilename.substring(originalFilename.indexOf("\\") + 1);}String fileName = "d:/temp/multi_" + System.currentTimeMillis() + "_" + originalFilename;out = new BufferedOutputStream(new FileOutputStream(fileName), 16 * 1024);byte[] buffer = new byte[16 * 1024];int len = 0;while ((len = in.read(buffer)) != -1) {out.write(buffer, 0, len);}} catch (Exception e) {result = new CallResult<String>(-1, "发⽣异常", "");e.printStackTrace();} finally {FileUtil.close(in);FileUtil.close(out);}("multi返回结果:{}", result);return result;}/*** 下载⽂件* @param request* @param response*/@RequestMapping("download")public void download(HttpServletRequest request, HttpServletResponse response) {int BUFFER_SIZE = 16 * 1024;BufferedInputStream bis = null;OutputStream out = null;try {String fileName = "a.jpg";String urlFileName = "";if (request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0) {urlFileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");} else {urlFileName = .URLEncoder.encode(fileName, "UTF-8");}response.reset();response.setContentType("application/octet-stream");response.setHeader("Content-Disposition", "attachment; filename=\"" + urlFileName + "\"");response.setHeader("Connection", "close");bis = new BufferedInputStream(new FileInputStream("d:/" + fileName), BUFFER_SIZE);out = new BufferedOutputStream(response.getOutputStream(), BUFFER_SIZE);byte buf[] = new byte[BUFFER_SIZE];int len;while ((len = bis.read(buf)) != -1) {out.write(buf, 0, len);}} catch (Exception e) {e.printStackTrace();} finally {FileUtil.close(bis);FileUtil.close(out);}}}2、其他辅助类2.1、CallResult类package mon.entity;import java.io.Serializable;import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.ObjectMapper;/*** @param <T>*/public class CallResult<T> implements Serializable {private static final long serialVersionUID = 1L;/*** 返回码* 0 正常,其他异常*/private int returnCode = 0;/*** 描述*/private String description = "OK";/*** 结果数据*/private T result;public CallResult(){}public CallResult(int returnCode, String description) {this.returnCode = returnCode;this.description = description;}public CallResult(int returnCode, String description, T result) {this.returnCode = returnCode;this.description = description;this.result = result;}public int getReturnCode() {return returnCode;}public void setReturnCode(int returnCode) {this.returnCode = returnCode;}public String getDescription() {return description;}public void setDescription(String description) {this.description = description;}public T getResult() {return result;}public void setResult(T result) {this.result = result;}@Overridepublic String toString() {//return JSON.toJSONString(this, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty, SerializerFeature.WriteNullStringAsEmpty);try {return new ObjectMapper().writeValueAsString(this);} catch (JsonProcessingException e) {e.printStackTrace();}return "";}}View Code2.2、User类package com.inspur.demo.http.entity;public class User {private String userId;private String userName;public String getUserId() {return userId;}public void setUserId(String userId) {erId = userId;}public String getUserName() {return userName;}public void setUserName(String userName) {erName = userName;}@Overridepublic String toString() {return "User [userId=" + userId + ", userName=" + userName + "]"; }}View Code2.2、FileUtil类package mon.util;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;/*** ⽂件操作⼯具*/public class FileUtil {private FileUtil() {}public static void close(InputStream in) {try {if (in != null) {in.close();}} catch (IOException e) {e.printStackTrace();}}public static void close(OutputStream out) {try {if (out != null) {out.close();}} catch (IOException e) {e.printStackTrace();}}}View Code3、接⼝地址在本地部署后,访问地址为:4、Https接⼝Https接⼝可以通过openssl⽣成证书、nginx设置⽅向代理来实现;由于这不是本系列⽂章的重点,这⾥就不详细介绍了,感兴趣的可以搜索研究。
java 获取方法入参和返回值

java 获取方法入参和返回值如何在Java中获取方法的入参和返回值?在Java开发中,有时我们需要获取方法的入参和返回值,以便进行相应的处理和分析。
本文将介绍如何使用反射机制来获取方法的入参和返回值。
一、反射机制简介反射是Java中的一种机制,它可以在运行时获取类的信息并进行操作。
通过反射,我们可以实现动态地获取类的字段、方法、构造函数等信息,以及动态调用类的方法。
二、使用反射获取方法的入参在Java中,我们可以使用反射来获取方法的入参。
具体步骤如下:1. 获取要获取入参的方法的Class对象。
可以通过方法所属类的Class对象的getMethod()方法来获取指定方法的Method对象,再通过Method 对象的getDeclaringClass()方法获取方法的Class对象。
2. 调用Method对象的getParameterTypes()方法,该方法将返回一个Class数组,其中包含了方法的所有入参的类型。
下面是一个示例代码:javaimport ng.reflect.Method;public class ReflectDemo {public static void testMethod(String str, int num){System.out.println("测试方法:" + str + ", " + num);}public static void main(String[] args) throws Exception { 获取testMethod方法的Class对象Method method =ReflectDemo.class.getMethod("testMethod", String.class, int.class);获取方法的入参类型Class<?>[] parameterTypes =method.getParameterTypes();遍历输出方法的入参类型for(Class<?> paramType : parameterTypes){System.out.println(paramType.getName());}}}运行上述代码,将输出`ng.String`和`int`,即testMethod方法的两个入参的类型。
java获取https网站证书,附带调用https:webservice接口

java获取https⽹站证书,附带调⽤https:webservice接⼝⼀、java 获取https⽹站证书: 1、创建⼀个java⼯程,新建InstallCert类,将以下代码复制进去package com;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.security.KeyStore;import java.security.MessageDigest;import java.security.cert.CertificateException;import java.security.cert.X509Certificate;import .ssl.SSLContext;import .ssl.SSLException;import .ssl.SSLSocket;import .ssl.SSLSocketFactory;import .ssl.TrustManager;import .ssl.TrustManagerFactory;import .ssl.X509TrustManager;/*** 从⽹站获取java所需的证书,调⽤时传⼊域名。
*/public class InstallCert {public static void main(String[] args) throws Exception {String host;int port;char[] passphrase;if ((args.length == 1) || (args.length == 2)) {String[] c = args[0].split(":");host = c[0];port = (c.length == 1) ? 443 : Integer.parseInt(c[1]);String p = (args.length == 1) ? "changeit" : args[1];passphrase = p.toCharArray();} else {System.out.println("Usage: java InstallCert <host>[:port] [passphrase]");return;}File file = new File("jssecacerts");if (file.isFile() == false) {char SEP = File.separatorChar;File dir = new File(System.getProperty("java.home") + SEP+ "lib" + SEP + "security");file = new File(dir, "jssecacerts");if (file.isFile() == false) {file = new File(dir, "cacerts");}}System.out.println("Loading KeyStore " + file + "...");InputStream in = new FileInputStream(file);KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());ks.load(in, passphrase);in.close();SSLContext context = SSLContext.getInstance("TLS");TrustManagerFactory tmf =TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());tmf.init(ks);X509TrustManager defaultTrustManager = (X509TrustManager)tmf.getTrustManagers()[0];SavingTrustManager tm = new SavingTrustManager(defaultTrustManager);context.init(null, new TrustManager[] {tm}, null);SSLSocketFactory factory = context.getSocketFactory();System.out.println("Opening connection to " + host + ":" + port + "...");SSLSocket socket = (SSLSocket)factory.createSocket(host, port);socket.setSoTimeout(10000);try {System.out.println("Starting SSL handshake...");socket.startHandshake();socket.close();System.out.println();System.out.println("No errors, certificate is already trusted");} catch (SSLException e) {System.out.println();e.printStackTrace(System.out);}X509Certificate[] chain = tm.chain;if (chain == null) {System.out.println("Could not obtain server certificate chain");return;}BufferedReader reader =new BufferedReader(new InputStreamReader(System.in));System.out.println();System.out.println("Server sent " + chain.length + " certificate(s):");System.out.println();MessageDigest sha1 = MessageDigest.getInstance("SHA1");MessageDigest md5 = MessageDigest.getInstance("MD5");for (int i = 0; i < chain.length; i++) {X509Certificate cert = chain[i];System.out.println(" " + (i + 1) + " Subject " + cert.getSubjectDN());System.out.println(" Issuer " + cert.getIssuerDN());sha1.update(cert.getEncoded());System.out.println(" sha1 " + toHexString(sha1.digest()));md5.update(cert.getEncoded());System.out.println(" md5 " + toHexString(md5.digest()));System.out.println();}System.out.println("Enter certificate to add to trusted keystore or 'q' to quit: [1]");String line = reader.readLine().trim();int k;try {k = (line.length() == 0) ? 0 : Integer.parseInt(line) - 1;} catch (NumberFormatException e) {System.out.println("KeyStore not changed");return;}X509Certificate cert = chain[k];String alias = host + "-" + (k + 1);ks.setCertificateEntry(alias, cert);OutputStream out = new FileOutputStream("jssecacerts");ks.store(out, passphrase);out.close();System.out.println();System.out.println(cert);System.out.println();System.out.println("Added certificate to keystore 'jssecacerts' using alias '"+ alias + "'");}private static final char[] HEXDIGITS = "0123456789abcdef".toCharArray();private static String toHexString(byte[] bytes) {StringBuilder sb = new StringBuilder(bytes.length * 3);for (int b : bytes) {b &= 0xff;sb.append(HEXDIGITS[b >> 4]);sb.append(HEXDIGITS[b & 15]);sb.append(' ');}return sb.toString();}private static class SavingTrustManager implements X509TrustManager {private final X509TrustManager tm;private X509Certificate[] chain;SavingTrustManager(X509TrustManager tm) {this.tm = tm;}public X509Certificate[] getAcceptedIssuers() {throw new UnsupportedOperationException();}public void checkClientTrusted(X509Certificate[] chain, String authType)throws CertificateException {throw new UnsupportedOperationException();}public void checkServerTrusted(X509Certificate[] chain, String authType)throws CertificateException {this.chain = chain;tm.checkServerTrusted(chain, authType);}}}InstallCert.java2、eclipse 传⼊参数(需要获取证书的域名,例:)运⾏main⽅法:注:这⾥注意更改参数的类,不要弄错了。
java soap 协议返回值

java soap 协议返回值SOAP(Simple Object Access Protocol)是一种用于交换结构化信息的通信协议,通常基于HTTP或SMTP等协议。
在Java中,可以使用SOAP协议进行远程方法调用和Web服务交互。
当使用Java开发基于SOAP协议的Web服务时,通常会涉及到返回值的处理。
在SOAP协议中,返回值通常以XML格式进行传输。
在Java中,可以使用各种方式来处理SOAP协议的返回值,下面我将从不同的角度来解释。
1. 使用JAX-WS,Java API for XML Web Services(JAX-WS)是Java EE平台的一部分,它提供了一种方便的方式来开发基于SOAP的Web服务。
在JAX-WS中,可以使用注解来定义Web服务和操作,并且可以使用Java对象来表示返回值。
当调用基于JAX-WS开发的Web服务时,返回的SOAP消息会被转换成Java对象,从而可以方便地处理返回值。
2. 使用SAAJ,SOAP with Attachments API for Java(SAAJ)是Java平台上用于处理SOAP消息的API。
通过SAAJ,可以直接操作和处理SOAP消息的各个部分,包括返回值。
使用SAAJ可以直接解析返回的SOAP消息,提取其中的数据,并进行相应的处理。
3. 使用第三方库,除了JAX-WS和SAAJ之外,还有许多第三方库可以用于处理SOAP协议的返回值,比如Apache CXF、Axis等。
这些库提供了各种工具和类来简化处理SOAP消息的过程,可以根据具体的需求选择合适的库来处理返回值。
总的来说,无论是使用JAX-WS、SAAJ还是第三方库,处理基于SOAP协议的返回值都需要对SOAP消息的结构和内容有一定的了解,以便能够准确地提取和处理返回值中的数据。
同时,也需要注意处理返回值时可能出现的异常情况,比如SOAP Fault等。
希望这些信息能够帮助你更好地理解在Java中处理基于SOAP协议的返回值的方法。
java获取在线文档数据的方法

要获取在线文档数据,可以使用Java的网络编程功能来连接文档所在的服务器,并从服务器上下载文档数据。
以下是一些可能有用的方法:
1. 使用Java的URL类获取文档数据:使用URL类中的openStream()方法可以打开一个与指定URL相关的数据流,然后可以使用Java IO库中的类来读取该数据流并获取文档数据。
2. 使用Java的URLConnection类获取文档数据:使用URLConnection类中的getInputStream()方法可以打开一个与指定URL相关的输入流,然后可以使用Java IO库中的类来读取该输入流并获取文档数据。
3. 使用Java的HttpClient类获取文档数据:HttpClient类可以用于发送HTTP请求并接收HTTP响应。
可以使用HttpClient类中的execute()方法发送HTTP GET请求以获取文档数据,然后可以使用Java IO库中的类来读取响应数据。
4. 使用第三方库来获取文档数据:有许多第三方库可用于从Web上获取数据,例如Jsoup和Apache HttpClient。
这些库通常提供更高级的API和更多的功能,可以使获取在线文档数据变得更加容易和灵活。
无论使用哪种方法,都需要确保在处理完数据后关闭所有打开的资源,例如输入/输出流、套接字和HTTP连接。
这可以通过使用Java
的try-with-resources语句来实现。
jav中jsonresult的使用步骤

JSONResult是Java中一个非常常用的类,用于封装返回给前端的JSON数据。
它可以很好地处理后端向前端通信的数据传输,让数据的传输更加便捷和规范。
在实际开发中,我们经常会用到JSONResult 来返回数据给前端,下面我将详细介绍JSONResult的使用步骤。
一、导入相关包在使用JSONResult时,首先需要导入相关的包。
JSONResult通常是在使用Spring框架进行开发时使用的,所以我们需要在pom.xml文件中引入Spring相关的依赖包。
具体而言,我们需要引入spring-web和jackson-databind这两个包。
<dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>5.3.10</version></dependency><dependency><groupId.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.12.5</version></dependency>在引入了这两个包之后,我们就可以开始使用JSONResult了。
二、编写Controller方法在Spring框架中,我们需要编写Controller来处理请求,并返回相应的数据给前端。
在编写Controller方法时,我们可以通过使用ResponseBody注解,并返回JSONResult对象来实现数据的返回。
ResponseBodyRequestMapping("/getUserInfo")public JSONResult getUserInfo() {UserInfo userInfo = userService.getUserInfo();return JSONResult.ok(userInfo);}在上面的例子中,我们编写了一个getUserInfo方法,通过调用userService的getUserInfo方法获取用户信息,并返回JSONResult.ok(userInfo)来返回数据给前端。
Java用HTTP的方式发送JSON报文请求

Java⽤HTTP的⽅式发送JSON报⽂请求前⾔: 项⽬调⽤第三⽅接⼝时,通常是⽤socket或者http的通讯⽅式发送请求:http 为短连接,客户端发送请求都需要服务器端回送响应,请求结束后,主动释放链接。
Socket为长连接:通常情况下Socket 连接就是 TCP 连接,因此 Socket 连接⼀旦建⽴,通讯双⽅开始互发数据内容,直到双⽅断开连接。
下⾯介绍HTTP的⽅式发送和接收JSON报⽂。
需求: ⽤HTTP的⽅式,向URL为10.10.10.110:8888地址发送json报⽂,返回的结果也是json报⽂。
主要代码如下:1 String resp= null;2 JSONObject obj = new JSONObject();3 obj.put("name", "张三");4 obj.put("age", "18");5 String query = obj.toString();6 ("发送到URL的报⽂为:");7 (query);8 try {9 URL url = new URL("http://10.10.10.110:8888"); //url地址1011 HttpURLConnection connection = (HttpURLConnection) url.openConnection();12 connection.setDoInput(true);13 connection.setDoOutput(true);14 connection.setRequestMethod("POST");15 connection.setUseCaches(false);16 connection.setInstanceFollowRedirects(true);17 connection.setRequestProperty("Content-Type","application/json");18 connection.connect();1920 try (OutputStream os = connection.getOutputStream()) {21 os.write(query.getBytes("UTF-8"));22 }2324 try (BufferedReader reader = new BufferedReader(25 new InputStreamReader(connection.getInputStream()))) {26 String lines;27 StringBuffer sbf = new StringBuffer();28 while ((lines = reader.readLine()) != null) {29 lines = new String(lines.getBytes(), "utf-8");30 sbf.append(lines);31 }32 ("返回来的报⽂:"+sbf.toString());33 resp = sbf.toString();3435 }36 connection.disconnect();3738 } catch (Exception e) {39 e.printStackTrace();40 }finally{41 JSONObject json = (JSONObject)JSON.parse(resp);42 }⽹上还有⼀种拼json发送报⽂的⽅式,也把代码分享出来:1 String resp = null;2 String name = request.getParameter("userName");3 String age = request.getParameter("userAge");4 String query = "{\"name\":\""+name+"\",\"age\":\""+age+"\"}";56 try {7 URL url = new URL("http://10.10.10.110:8888"); //url地址89 HttpURLConnection connection = (HttpURLConnection) url.openConnection();10 connection.setDoInput(true);11 connection.setDoOutput(true);12 connection.setRequestMethod("POST");13 connection.setUseCaches(false);14 connection.setInstanceFollowRedirects(true);15 connection.setRequestProperty("Content-Type","application/json");16 connection.connect();1718 try (OutputStream os = connection.getOutputStream()) {19 os.write(query.getBytes("UTF-8"));20 }2122 try (BufferedReader reader = new BufferedReader(23 new InputStreamReader(connection.getInputStream()))) {24 String lines;25 StringBuffer sbf = new StringBuffer();26 while ((lines = reader.readLine()) != null) {27 lines = new String(lines.getBytes(), "utf-8");28 sbf.append(lines);29 }30 ("返回来的报⽂:"+sbf.toString());31 resp = sbf.toString();3233 }34 connection.disconnect();3536 } catch (Exception e) {37 e.printStackTrace();38 }finally{39 JSONObject json = (JSONObject)JSON.parse(resp);40 }两种⽅式其实都是⼀样的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java获取http和https协议返回的json数据
现在很多公司都是将数据返回一个json,而且很多第三方接口都是返回json数据,而且还需要使用到http协议,http协议是属于为加密的协议,而https协议需要SSL证书,https是将用户返回的信息加密处理,然而我们要获取这些数据,就需要引入SSL证书。
现在我提供两个方法,帮助各位如何获取http和https返回的数据。
获取http协议的数据的方法,如下:
public static JSONObject httpRequest(String requestUrl, String requestMethod) {
JSONObject jsonObject = null;
StringBuffer buffer = new StringBuffer();
try { URL url = new URL(requestUrl);
// http协议传输
HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection(); httpUrlConn.setDoOutput(true);
httpUrlConn.setDoInput(true);
httpUrlConn.setUseCaches(false);
// 设置请求方式(GET/POST)
httpUrlConn.setRequestMethod(requestMethod);
if ("GET".equalsIgnoreCase(requestMethod))
httpUrlConn.connect();
// 将返回的输入流转换成字符串
InputStream inputStream = httpUrlConn.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String str = null;
while ((str = bufferedReader.readLine()) != null) {
buffer.append(str);
}
bufferedReader.close();
inputStreamReader.close();
// 释放资源
inputStream.close();
inputStream = null;
httpUrlConn.disconnect();
jsonObject =
JSONObject.fromObject(buffer.toString());
} catch (Exception e) {
e.printStackTrace();
}
return jsonObject;
}
获取https协议的数据的方法,如下:
public static JSONObject httpsRequest(String requestUrl, String requestMethod, String outputStr) {
JSONObject jsonObject = null;
StringBuffer buffer = new StringBuffer();
try {
// 创建SSLContext对象,并使用我们指定的信任管理器初始化
TrustManager[] tm = { new
MyX509TrustManager() };
SSLContext sslContext =
SSLContext.getInstance("SSL", "SunJSSE");
sslContext.init(null, tm, new
java.security.SecureRandom());
// 从上述SSLContext对象中得到SSLSocketFactory对象
SSLSocketFactory ssf =
sslContext.getSocketFactory(); URL url = new URL(requestUrl);
HttpsURLConnection httpUrlConn = (HttpsURLConnection) url.openConnection();
httpUrlConn.setSSLSocketFactory(ssf); httpUrlConn.setDoOutput(true);
httpUrlConn.setDoInput(true);
httpUrlConn.setUseCaches(false);
// 设置请求方式(GET/POST)
httpUrlConn.setRequestMethod(requestMethod);
if ("GET".equalsIgnoreCase(requestMethod))
httpUrlConn.connect(); //
当有数据需要提交时
if (null != outputStr) {
OutputStream outputStream = httpUrlConn.getOutputStream();
// 注意编码格式,防止中文乱码
outputStream.write(outputStr.getBytes("UTF-8"));
outputStream.close();
} // 将返回的输入流转换成字符串
InputStream inputStream = httpUrlConn.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String str = null;
while ((str = bufferedReader.readLine()) != null) {
buffer.append(str);
}
bufferedReader.close();
inputStreamReader.close();
// 释放资源
inputStream.close();
inputStream = null;
httpUrlConn.disconnect();
jsonObject =
JSONObject.fromObject(buffer.toString());
} catch (ConnectException ce) {
log.error("Weixin server connection timed out.");
} catch (Exception e) {
log.error("https request error:{}", e);
}
return jsonObject;
}
获取https协议的数据和获取http协议的区别在于// 创建SSLContext对象,并使用我们指定的信任管理器初始化
TrustManager[] tm = { new
MyX509TrustManager() };
SSLContext sslContext =
SSLContext.getInstance("SSL", "SunJSSE");
sslContext.init(null, tm, new
java.security.SecureRandom());
// 从上述SSLContext对象中得到SSLSocketFactory对象
SSLSocketFactory ssf =
sslContext.getSocketFactory(); URL url = new URL(requestUrl);
HttpsURLConnection httpUrlConn =
(HttpsURLConnection) url.openConnection();
httpUrlConn.setSSLSocketFactory(ssf);
大家有更好的方法欢迎留言分享,以上就是本次共享的内容。
还有,提示一下,如果复制中,缺失jar包,请自行下载,如果找不到,请给我留言,还有,程序是死的,人是活的,怎么方便怎么来。