HTTPS请求工具类汇总
前端开发中常用的网络请求库和技术介绍
前端开发中常用的网络请求库和技术介绍随着互联网的快速发展,前端开发的重要性也日益凸显。
作为前端开发人员,我们经常需要与后端进行数据交互,这就需要使用网络请求库和技术来实现。
本文将介绍一些常用的网络请求库和技术,帮助前端开发人员更好地进行数据交互。
一、XMLHttpRequestXMLHttpRequest是前端开发中最常用的网络请求技术之一。
它是一种用于在浏览器和服务器之间发送HTTP请求的对象。
XMLHttpRequest可以实现异步请求,从而不会阻塞页面的加载。
通过使用XMLHttpRequest对象,我们可以发送GET、POST等请求,接收服务器返回的数据,并在页面上进行展示。
二、Fetch APIFetch API是一种新的网络请求技术,它提供了更简洁、更强大的接口来处理网络请求。
Fetch API使用Promise对象来处理异步请求,相比于XMLHttpRequest,代码更加简洁易读。
Fetch API支持跨域请求、请求取消等功能,可以更好地满足前端开发的需求。
三、AxiosAxios是一个基于Promise的HTTP客户端,用于浏览器和Node.js中发送HTTP请求。
它具有简洁的API和强大的功能,可以处理各种类型的请求,如GET、POST、PUT、DELETE等。
Axios还支持请求拦截器、响应拦截器等功能,可以对请求和响应进行全局的处理。
由于其易用性和可扩展性,Axios成为了前端开发中最受欢迎的网络请求库之一。
四、SuperagentSuperagent是一个轻量级的HTTP请求库,它支持浏览器和Node.js环境。
Superagent的API简洁易用,可以发送各种类型的请求,并处理服务器返回的数据。
它还提供了丰富的插件机制,可以根据需求进行扩展。
Superagent的灵活性和可定制性使其成为前端开发中常用的网络请求库之一。
五、jQuery AjaxjQuery是一个广泛使用的JavaScript库,其中的Ajax模块提供了简单易用的API来处理网络请求。
https请求的几种方式
https 请求的⼏种⽅式http/https 向服务端传递数据的⽅式,基本可以分为 5 种:url param、query、form-urlencoded、form-data、json。
get请求常⽤数据类型:要么是拼接在URl 后⾯, 要么就是 QueryString的⽅式传递,Content-Type 的值就不是那么重要了。
url paramRestful 的规范允许把参数写在 url 中,⽐如:这⾥的111就是路径中的参数 (url params)query通过 url 中 ?后⾯的⽤ & 分隔的字符串传递数据。
⽐如:Po st请求常⽤数据类型对于 POST 请求,Content-Type 的值就⾮常重要了application/x-www-form-urlencoded直接⽤from 表单提交数据就是这种, 他和query字符串的⽅式的区别是放在了body⾥,然后指定下 content-type是因为也是 query 字符串,所以也要⽤ encodeURIComponent 的 api 或者 QS的 库QS.stringify处理下。
其实这种设计也很容易理解,get 是把数据拼成 query 字符串放在 url 后⾯,于是设计表单的 post 提交⽅式的时候就直接⽤相同的⽅式把数据放在了 body ⾥。
通过 & 分隔的 form-urlencoded 的⽅式需要对内容做 url encode,如果传递⼤量的数据,⽐如上传⽂件的时候就不是很合适了,因为⽂件 encode ⼀遍的话太慢了,这时候就可以⽤ form-data。
form-data form-data 需要指定 content type 为 ,然后指定 boundary 也就是分割线。
对于⼆进制⽂件或者⾮ ASCII 字符的传输, 是低效的。
对于包含⽂件、⼆进制数据、⾮ ASCII 字符的内容,应该使⽤ 。
的请求体包含多个部分,需要通过 boundary 字符分割。
httpstaus汇总
httpstaus汇总常见HTTP状态码1.2.3.4.5.6.7.8.9.10.11.12.100 Continue初始的请求已经接受,客户应当继续发送请求的其余部分101 Switching Protocols服务器将遵从客户的请求转换到另外⼀种协议200 OK⼀切正常,对GET和POST请求的应答⽂档跟在后⾯201 Created服务器已经创建了⽂档,Location头给出了它的URL。
202 Accepted已经接受请求,但处理尚未完成。
203 Non-Authoritative Information⽂档已经正常地返回,但⼀些应答头可能不正确,因为使⽤的是⽂档的拷贝204 No Content没有新⽂档,浏览器应该继续显⽰原来的⽂档。
如果⽤户定期地刷新页⾯,⽽Servlet可以确定⽤户⽂档⾜够新,这个状态代码是很有⽤的205 Reset Content没有新的内容,但浏览器应该重置它所显⽰的内容。
⽤来强制浏览器清除表单输⼊内容206 Partial Content客户发送了⼀个带有Range头的GET请求,服务器完成了它300 Multiple Choices客户请求的⽂档可以在多个位置找到,这些位置已经在返回的⽂档内列出。
如果服务器要提出优先选择,则应该在Location应答头指明。
301 Moved Permanently客户请求的⽂档在其他地⽅,新的URL在Location头中给出,浏览器应该⾃动地访问新的URL。
302 Found类似于301,但新的URL应该被视为临时性的替代,⽽不是永久性的。
303 See Other类似于301/302,不同之处在于,如果原来的请求是POST,Location头指定的重定向⽬标⽂档应该通过GET提取304 Not Modified客户端有缓冲的⽂档并发出了⼀个条件性的请求(⼀般是提供If-Modified-Since头表⽰客户只想⽐指定⽇期更新的⽂档)。
列出常用的请求方法及用途
列出常用的请求方法及用途
在HTTP 协议中,常用的请求方法有以下几种:
1. GET:用于从服务器获取资源。
通常用于请求网页、图片、文件等。
请求时不会对服务器上的资源产生影响。
2. POST:用于向服务器提交数据,以创建或更新资源。
例如,提交表单数据、上传文件等。
请求可能会对服务器上的资源产生影响。
3. PUT:用于更新服务器上的资源。
通常用于更新现有资源的内容。
4. DELETE:用于删除服务器上的资源。
5. OPTIONS:用于获取服务器支持的请求方法或其他相关信息。
6. HEAD:与GET 方法类似,但只返回请求头部分,不返回请求体。
常用于检查资源的有效性或获取资源的元数据。
7. TRACE:用于追踪请求在服务器之间的传输路径。
主要用于调试和诊断。
8. PATCH:用于对服务器上的资源进行部分更新。
与PUT 方法类似,但只更新资源的一部分。
这些请求方法在Web 开发和应用程序中被广泛使用,每种方法都有其特定的用途和语义。
fastadmin curl请求方法
fastadmin curl请求方法作为一名职业写手,本文将为您详细介绍curl请求方法。
curl是一款功能强大的命令行HTTP请求工具,被广泛应用于各种开发场景。
接下来,我们将分析curl的语法结构,并列举一些常用的请求方式。
一、curl请求的基本语法curl请求的基本语法如下:```curl [options] -X HTTP_METHOD [URL]```其中,[options]为可选项,[URL]为请求的网址。
HTTP_METHOD为请求方法,如GET、POST等。
二、curl请求方法详解1.GET请求GET请求是用于获取指定资源的请求方法。
使用curl发送GET请求的示例代码如下:```curl -G https:///api/data```2.POST请求POST请求用于向服务器提交数据。
以下是使用curl发送POST请求的示例代码:```curl -d "key1=value1&key2=value2" -X POSThttps:///api/data```3.PUT请求PUT请求用于更新服务器上的资源。
以下是用curl发送PUT请求的示例代码:```curl -X PUT -H "Content-Type: application/json" -d "{"key": "new_value"}" https:///api/data```4.DELETE请求DELETE请求用于删除服务器上的资源。
以下是用curl发送DELETE请求的示例代码:```curl -X DELETE https:///api/data```5.PATCH请求PATCH请求用于对服务器上的资源进行部分更新。
以下是用curl发送PATCH请求的示例代码:```curl -X PATCH -H "Content-Type: application/json" -d "{"key":"new_value"}" https:///api/data```三、curl请求的实际应用场景1.网页爬虫:使用curl获取网页源代码,分析数据,实现自动化爬取。
get post 请求 工具
get post 请求工具如何使用GET和POST请求工具在互联网应用程序开发中,GET和POST请求是两种最常用的HTTP请求方法。
GET请求用于从服务器获取资源,而POST请求用于向服务器提交数据。
为了进行GET和POST请求,我们可以使用各种工具和技术。
本文将介绍几种使用GET和POST请求工具的方法,并通过一步一步的指导来解释如何使用这些工具。
第一部分:GET请求工具GET请求是一种用于从服务器获取资源的HTTP方法。
GET请求使用URL来传递数据,并且数据以键值对的形式附加在URL的查询字符串中。
以下是一些常见的GET请求工具,以及如何使用它们:1. Web浏览器:Web浏览器是最常见的GET请求工具之一。
打开任何现代Web浏览器,如Google Chrome、Mozilla Firefox或Microsoft Edge,在地址栏中输入目标URL并按下Enter键即可发送GET请求。
浏览器将向服务器发送GET请求,并在浏览器窗口中显示响应的结果。
你还可以在浏览器的网络调试工具中查看请求和响应的详细信息。
2. cURL:cURL是一个功能强大的用于在命令行界面中发送HTTP请求的工具。
你可以在任何支持cURL的操作系统上使用它。
要发送GET请求,只需在命令行中运行以下命令:curl [URL]替换[URL]为目标URL。
cURL将发送GET请求并显示服务器的响应。
你还可以使用各种选项来自定义请求,如添加HTTP头、设置超时时间等。
3. Postman:Postman是一个流行的API测试工具,支持发送各种类型的HTTP 请求,包括GET请求。
下载并安装Postman,然后打开它。
在Postman的地址栏中输入目标URL,选择GET请求方法,并点击“发送”按钮。
Postman将向服务器发送GET请求,并在结果窗口中显示响应。
第二部分:POST请求工具POST请求是一种用于向服务器提交数据的HTTP方法。
关于JAVA发送Https请求(HttpsURLConnection和HttpURLCon。。。
关于JAVA发送Https请求(HttpsURLConnection和HttpURLCon。
关于JAVA发送Https请求(HttpsURLConnection和HttpURLConnection)【转】https协议对于开发者⽽⾔其实只是多了⼀步证书验证的过程。
这个证书正常情况下被jdk/jre/security/cacerts所管理。
⾥⾯证书包含两种情况:1、机构所颁发的被认证的证书,这种证书的⽹站在浏览器访问时https头显⽰为绿⾊如百度2、个⼈所设定的证书,这种证书的⽹站在浏览器⾥https头显⽰为红⾊×,且需要点击信任该⽹站才能继续访问。
⽽点击信任这⼀步的操作就是我们在java代码访问https⽹站时区别于http请求需要做的事情。
所以JAVA发送Https请求有两种情况,三种解决办法:第⼀种情况:Https⽹站的证书为机构所颁发的被认证的证书,这种情况下和http请求⼀模⼀样,⽆需做任何改变,⽤HttpsURLConnection 或者HttpURLConnection都可以[java]1. public static void main(String[] args) throws Exception{2. URL serverUrl = new URL("https://xxxx");3. HttpURLConnection conn = (HttpURLConnection) serverUrl.openConnection();4. conn.setRequestMethod("GET");5. conn.setRequestProperty("Content-type", "application/json");6. //必须设置false,否则会⾃动redirect到重定向后的地址7. conn.setInstanceFollowRedirects(false);8. conn.connect();9. String result = getReturn(conn);10. }11.12. /*请求url获取返回的内容*/13. public static String getReturn(HttpURLConnection connection) throws IOException{14. StringBuffer buffer = new StringBuffer();15. //将返回的输⼊流转换成字符串16. try(InputStream inputStream = connection.getInputStream();17. InputStreamReader inputStreamReader = new InputStreamReader(inputStream, ConstantInfo.CHARSET);18. BufferedReader bufferedReader = new BufferedReader(inputStreamReader);){19. String str = null;20. while ((str = bufferedReader.readLine()) != null) {21. buffer.append(str);22. }23. String result = buffer.toString();24. return result;25. }26. }第⼆种情况:个⼈所设定的证书,这种证书默认不被信任,需要我们⾃⼰选择信任,信任的办法有两种:A、将证书导⼊java的运⾏环境中从该⽹站下载或者从⽹站开发者出获取证书cacert.crt运⾏命令将证书导⼊java运⾏环境:keytool -import -keystore %JAVA_HOME%\jre\lib\security\cacerts -file cacert.crt -alias xxx 完成。
HttpUtil工具类,发送GetPost请求,支持Http和Https协议
HttpUtil⼯具类,发送GetPost请求,⽀持Http和Https协议HttpUtil⼯具类,发送Get/Post请求,⽀持Http和Https协议使⽤⽤Httpclient封装的HttpUtil⼯具类,发送Get/Post请求1. maven引⼊httpclient依赖<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.12</version></dependency>2. GET请求public static String doGet(String path, Map<String, String> param, Map<String, String> headers) {HttpGet httpGet = null;CloseableHttpResponse response = null;CloseableHttpClient httpClient = wrapClient(path);// 创建uriURIBuilder builder = null;try {builder = new URIBuilder(path);if (param != null) {for (String key : param.keySet()) {builder.addParameter(key, param.get(key));}}URI uri = builder.build();// 创建http GET请求httpGet = new HttpGet(uri);if (headers != null && headers.size() > 0) {for (Map.Entry<String, String> entry : headers.entrySet()) {httpGet.addHeader(entry.getKey(), entry.getValue());}}// 执⾏请求response = httpClient.execute(httpGet);// 判断返回状态是否为200if (response.getStatusLine().getStatusCode() == 200) {return EntityUtils.toString(response.getEntity(), "UTF-8");}} catch (Exception e) {throw new RuntimeException("[发送Get请求错误:]" + e.getMessage());} finally {try {httpGet.releaseConnection();response.close();if (httpClient != null) {httpClient.close();}} catch (IOException e) {e.printStackTrace();}}return null;}3. POST请求public static String doPostJson(String url, String jsonParam, Map<String, String> headers) {HttpPost httpPost = null;CloseableHttpResponse response = null;CloseableHttpClient httpClient = wrapClient(url);try {httpPost = new HttpPost(url);//addHeader,如果Header没有定义则添加,已定义则不变,setHeader会重新赋值httpPost.addHeader("Content-type","application/json;charset=utf-8");httpPost.setHeader("Accept", "application/json");StringEntity entity = new StringEntity(jsonParam, StandardCharsets.UTF_8);// entity.setContentType("text/json");// entity.setContentEncoding(new BasicHeader("Content-Type", "application/json;charset=UTF-8"));httpPost.setEntity(entity);//是否有headerif (headers != null && headers.size() > 0) {for (Map.Entry<String, String> entry : headers.entrySet()) {httpPost.addHeader(entry.getKey(), entry.getValue());}}// 执⾏请求response = httpClient.execute(httpPost);// 判断返回状态是否为200if (response.getStatusLine().getStatusCode() == 200) {return EntityUtils.toString(response.getEntity(), "UTF-8");}} catch (Exception e) {throw new RuntimeException("[发送POST请求错误:]" + e.getMessage());} finally {try {httpPost.releaseConnection();response.close();if (httpClient != null) {httpClient.close();}} catch (IOException e) {e.printStackTrace();}}return null;}3. 获取httpclient的⽅法这⾥会根据url⾃动匹配需要的是http的还是https的clientprivate static CloseableHttpClient wrapClient(String url) {CloseableHttpClient client = HttpClientBuilder.create().build();if (url.startsWith("https")) {client = getCloseableHttpsClients();}return client;}4. 对于https的需要⾃⼰实现⼀下clientprivate static CloseableHttpClient getCloseableHttpsClients() {// 采⽤绕过验证的⽅式处理https请求SSLContext sslcontext = createIgnoreVerifySSL();// 设置协议http和https对应的处理socket链接⼯⼚的对象Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create().register("http", PlainConnectionSocketFactory.INSTANCE).register("https", new SSLConnectionSocketFactory(sslcontext)).build();PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry); HttpClients.custom().setConnectionManager(connManager);// 创建⾃定义的httpsclient对象CloseableHttpClient client = HttpClients.custom().setConnectionManager(connManager).build();return client;}private static SSLContext createIgnoreVerifySSL() {// 创建套接字对象SSLContext sslContext = null;try {//指定TLS版本sslContext = SSLContext.getInstance("TLSv1.2");} catch (NoSuchAlgorithmException e) {throw new RuntimeException("[创建套接字失败:] " + e.getMessage());}// 实现X509TrustManager接⼝,⽤于绕过验证X509TrustManager trustManager = new X509TrustManager() {@Overridepublic void checkClientTrusted(java.security.cert.X509Certificate[] paramArrayOfX509Certificate,String paramString) throws CertificateException {}@Overridepublic void checkServerTrusted(java.security.cert.X509Certificate[] paramArrayOfX509Certificate,String paramString) throws CertificateException {}@Overridepublic java.security.cert.X509Certificate[] getAcceptedIssuers() {return null;}};try {//初始化sslContext对象sslContext.init(null, new TrustManager[]{trustManager}, null);} catch (KeyManagementException e) {throw new RuntimeException("[初始化套接字失败:] " + e.getMessage()); }return sslContext;}以上全部都测试通过,如果有错误,欢迎⼤佬们指出,感谢备注:完整版的让坚持成为品质,让优秀成为习惯!加油!。
HttpUtils发送http请求工具类(实例讲解)
HttpUtils发送http请求⼯具类(实例讲解)废话不多说,直接上代码import java.io.IOException;import java.io.UnsupportedEncodingException;import .URISyntaxException;import java.util.ArrayList;import java.util.Map;import mons.logging.Log;import mons.logging.LogFactory;import org.apache.http.HttpEntity;import ValuePair;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.config.RequestConfig;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.client.methods.HttpRequestBase;import org.apache.http.client.utils.URIBuilder;import org.apache.http.entity.StringEntity;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;import org.apache.http.message.BasicNameValuePair;import org.apache.http.util.EntityUtils;import com.pingan.qhcs.map.audit.constant.CodeConstant;import com.pingan.qhcs.map.audit.exception.MapException;public class HttpClientUtil {protected static Log logger = LogFactory.getLog(HttpClientUtil.class);private static PoolingHttpClientConnectionManager cm;private static String EMPTY_STR = "";private static String UTF_8 = "UTF-8";private static void init() {if (cm == null) {cm = new PoolingHttpClientConnectionManager();cm.setMaxTotal(50);// 整个连接池最⼤连接数cm.setDefaultMaxPerRoute(5);// 每路由最⼤连接数,默认值是2}}/*** 通过连接池获取HttpClient** @return*/public static CloseableHttpClient getHttpClient() {init();return HttpClients.custom().setConnectionManager(cm).build();}public static String httpGetRequest(String url) {HttpGet httpGet = new HttpGet(url);return getResult(httpGet);}public static String httpGetRequest(String url, Map<String, Object> params) throws URISyntaxException {URIBuilder ub = new URIBuilder();ub.setPath(url);ArrayList<NameValuePair> pairs = covertParams2NVPS(params);ub.setParameters(pairs);HttpGet httpGet = new HttpGet(ub.build());return getResult(httpGet);}public static String httpGetRequest(String url, Map<String, Object> headers, Map<String, Object> params)throws URISyntaxException {URIBuilder ub = new URIBuilder();ub.setPath(url);ArrayList<NameValuePair> pairs = covertParams2NVPS(params);ub.setParameters(pairs);HttpGet httpGet = new HttpGet(ub.build());for (Map.Entry<String, Object> param : headers.entrySet()) {httpGet.addHeader(param.getKey(), String.valueOf(param.getValue()));}return getResult(httpGet);}public static String httpPostRequest(String url) {HttpPost httpPost = new HttpPost(url);return getResult(httpPost);}public static String httpPostRequest(String url, Map<String, Object> params) throws UnsupportedEncodingException {HttpPost httpPost = new HttpPost(url);ArrayList<NameValuePair> pairs = covertParams2NVPS(params);httpPost.setEntity(new UrlEncodedFormEntity(pairs, UTF_8));return getResult(httpPost);}public static String httpPostRequest(String url, Map<String, Object> headers, Map<String, Object> params)throws UnsupportedEncodingException {HttpPost httpPost = new HttpPost(url);for (Map.Entry<String, Object> param : headers.entrySet()) {httpPost.addHeader(param.getKey(), String.valueOf(param.getValue()));}ArrayList<NameValuePair> pairs = covertParams2NVPS(params);httpPost.setEntity(new UrlEncodedFormEntity(pairs, UTF_8));return getResult(httpPost);}public static String httpPostRequest(String url, Map<String, Object> headers, String strBody)throws Exception {HttpPost httpPost = new HttpPost(url);for (Map.Entry<String, Object> param : headers.entrySet()) {httpPost.addHeader(param.getKey(), String.valueOf(param.getValue()));}httpPost.setEntity(new StringEntity(strBody, UTF_8));return getResult(httpPost);}private static ArrayList<NameValuePair> covertParams2NVPS(Map<String, Object> params) {ArrayList<NameValuePair> pairs = new ArrayList<NameValuePair>();for (Map.Entry<String, Object> param : params.entrySet()) {pairs.add(new BasicNameValuePair(param.getKey(), String.valueOf(param.getValue())));}return pairs;}/*** 处理Http请求** setConnectTimeout:设置连接超时时间,单位毫秒。
简述https请求流程
简述https请求流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor. I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!1. 客户端发起请求:客户端(通常是浏览器)向服务器发送一个 https 请求。
resttemplate 请求工具类
resttemplate 请求工具类RestTemplate是一个常用的请求工具类,用于发送http请求和接收http响应。
它提供了简单易用的API,支持多种HTTP请求方法,如GET,POST,DELETE等。
RestTemplate主要作用于Spring Boot中,是通过RestTemplate实现了HTTP、FTP、SMTP等协议的客户端请求工具类,非常方便、快捷易用。
使用RestTemplate的目的是为了让我们的代码更加简单和易于维护,以及提供更加良好的代码复用性和易读性。
下面就是详细的步骤:1. 导入RestTemplate相关依赖在使用RestTemplate之前,需要先导入相关依赖。
在Spring Boot的pom.xml文件中,导入以下依赖:```<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>```2. 创建RestTemplate实例创建RestTemplate实例非常简单,只需要使用new关键字来创建即可:```RestTemplate restTemplate = new RestTemplate();```3. 发送请求使用RestTemplate发送请求非常简单,只需要使用对应的GET、POST、DELETE等方法即可。
例如,使用GET方法发送请求的代码如下:```String result = restTemplate.getForObject(url, String.class); ```其中,url是请求的地址,String.class是结果的类型,这里是字符串类型。
4. 处理响应RestTemplate返回的结果是一个ResponseEntity类型的对象,需要根据实际情况来处理响应结果。
resul 常用的 7 种请求方式
主题:常用的 7 种请求方式随着互联网的快速发展,人们日常生活中越来越多地依赖网络和各种软件应用来获取信息、完成交易和进行交流。
在这个过程中,请求方式成为了信息交流的重要环节之一。
以下将介绍常用的7 种请求方式,帮助读者更好地理解和应用这些方式。
一、GET 请求1. GET 请求是 HTTP 协议中最常用的一种请求方式,它用于从指定的资源获取数据。
GET 请求可以在 URL 中传递参数,也可以直接在URL 后面跟上参数键值对,如:xxx。
2. GET 请求的优点是简单、快速,适用于数据量较小、无需保密的情况。
3. 但是,GET 请求的缺点是在 URL 中传递的参数会暴露在位置区域栏中,可能会被窥探到,因此不适合传输敏感信息。
二、POST 请求1. POST 请求同样是 HTTP 协议中常用的一种请求方式,它用于向指定的资源提交要处理的数据。
POST 请求的参数不会暴露在位置区域栏中,而是通过请求体传递。
2. POST 请求的优点是可以传输大量数据,适用于需要保密、数据量较大的情况。
3. 但是,POST 请求的缺点是相对于 GET 请求来说速度稍慢,并且需要服务器端对请求体进行解析和处理。
三、PUT 请求1. PUT 请求是用于向服务器上传数据的一种请求方式,它会取代指定资源的所有当前表示。
2. PUT 请求的优点是可以用于新建或更新资源,具有幂等性,即对同一资源的多次请求所产生的效果是一致的。
3. PUT 请求的缺点是并不被所有的浏览器和服务器支持,而且可能会对现有的资源进行覆盖,存在一定的风险。
四、DELETE 请求1. DELETE 请求用于删除指定的资源,它与 GET 请求一样,可以在URL 中传递参数。
2. DELETE 请求的优点是可以用于删除指定资源,与 PUT 请求一样具有幂等性。
3. DELETE 请求的缺点是同样并不被所有的浏览器和服务器支持,而且因为删除具有破坏性,需要谨慎使用。
HttpsUtils工具类https请求工具类
HttpsUtils⼯具类https请求⼯具类package mon.util;import java.io.InputStream;import java.io.OutputStream;import .HttpURLConnection;import .URL;import .URLEncoder;import java.nio.charset.Charset;import java.security.SecureRandom;import java.security.cert.CertificateException;import java.security.cert.X509Certificate;import java.util.Arrays;import java.util.HashMap;import java.util.Map;import .ssl.HostnameVerifier;import .ssl.HttpsURLConnection;import .ssl.SSLContext;import .ssl.SSLSession;import .ssl.TrustManager;import .ssl.X509TrustManager;import com.alibaba.fastjson.JSONObject;import com.alibaba.fastjson.serializer.SerializerFeature;public class HttpsUtils {public static String METHOD_GET = "GET";public static String METHOD_POST = "POST";public static int DEF_CONNECT_TIMEOUT = 2 * 1000;public static int DEF_READ_TIMEOUT = 8 * 1000;public static Charset DEF_CHARSET = Charset.forName("UTF-8");public static void main(String[] args) {JSONObject x=HttpsUtils.doGetAuthorization("https:///ws/v1/wsfulfilment/list_fulfilment_clients"); System.out.println(x);}public static JSONObject doGetAuthorization(String url) {Map<String, String> headers=new HashMap<>();headers.put("Authorization", "DC 454");String xx=HttpsUtils.Get(url, headers);return JSONObject.parseObject(xx);}public static TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {public java.security.cert.X509Certificate[] getAcceptedIssuers() {return new java.security.cert.X509Certificate[]{};}@Overridepublic void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {}@Overridepublic void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {}}};public static void trustAll() {try {SSLContext sc = SSLContext.getInstance("TLS");sc.init(null, trustAllCerts, new java.security.SecureRandom());HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());} catch (Exception e) {e.printStackTrace();}}static {trustAll();}public static String Get(String urlString) {return HttpsGo(urlString, METHOD_GET, null, null, DEF_CONNECT_TIMEOUT, DEF_READ_TIMEOUT);}public static String Get(String urlString, Map<String, String> headers) {return HttpsGo(urlString, METHOD_GET, headers, null, DEF_CONNECT_TIMEOUT, DEF_READ_TIMEOUT);}public static String Get(String urlString, Map<String, String> headers, Map<String, String> params) {if (params != null && params.isEmpty() == false) {StringBuffer url = new StringBuffer(urlString);try {boolean isFirst = true;if (urlString.contains("?")) {if (urlString.endsWith("&") == false && urlString.contains("&")) {isFirst = false;}} else {url.append('?');}String paramsEncoding = DEF_();for (Map.Entry<String, String> entry : params.entrySet()) {if (isFirst) isFirst = false; else url.append('&');url.append(URLEncoder.encode(entry.getKey(), paramsEncoding));url.append('=');url.append(URLEncoder.encode(entry.getValue(), paramsEncoding));}} catch (Exception e) {}return Get(url.toString(), headers);} else {return Get(urlString, headers);}}public static String Post(String urlString, String contentType, byte[] content) {Map<String, String> headers = new HashMap<String, String>(1);headers.put("Content-Type", contentType);return HttpsGo(urlString, METHOD_POST, headers, content, DEF_CONNECT_TIMEOUT, DEF_READ_TIMEOUT);}public static String FormPost(String urlString, String content) {Map<String, String> headers = new HashMap<String, String>(1);headers.put("Content-Type", String.format("application/x-www-form-urlencoded; charset=%s", DEF_()));return HttpsGo(urlString, METHOD_POST, null, content.getBytes(DEF_CHARSET), DEF_CONNECT_TIMEOUT, DEF_READ_TIMEOUT);}public static String XmlPost(String urlString, String content) {Map<String, String> headers = new HashMap<String, String>(1);headers.put("Content-Type", String.format("text/html; charset=%s", DEF_()));return HttpsGo(urlString, METHOD_POST, headers, content.getBytes(DEF_CHARSET), DEF_CONNECT_TIMEOUT, DEF_READ_TIMEOUT); }public static String JsonPost(String urlString, Object content) {return JsonPost(urlString, JSONObject.toJSONString(content, SerializerFeature.DisableCircularReferenceDetect));}public static String JsonPost(String urlString, String content) {Map<String, String> headers = new HashMap<String, String>(1);headers.put("Content-Type", String.format("application/json; charset=%s", DEF_()));return HttpsGo(urlString, METHOD_POST, headers, content.getBytes(DEF_CHARSET), DEF_CONNECT_TIMEOUT, DEF_READ_TIMEOUT); }public static String HttpsGo(String urlString, String method, Map<String, String> headers, byte[] content, int connectTimeout, int readTimeout) { HttpsURLConnection conn = null;try {conn = (HttpsURLConnection) new URL(urlString).openConnection();SSLContext sc = SSLContext.getInstance("SSL");sc.init(null, trustAllCerts, new SecureRandom());conn.setHostnameVerifier(new HostnameVerifier() {@Overridepublic boolean verify(String arg0, SSLSession arg1) {return true;}});conn.setSSLSocketFactory(sc.getSocketFactory());conn.setRequestMethod(method);conn.setDoOutput(true);conn.setDoInput(true);conn.setUseCaches(false);conn.setConnectTimeout(connectTimeout);conn.setReadTimeout(readTimeout);if (headers != null) {for (Map.Entry<String, String> entry : headers.entrySet()) {conn.addRequestProperty(entry.getKey(), entry.getValue());}}if (content != null) {if (headers == null || headers.containsKey("Content-Length") == false) {conn.addRequestProperty("Content-Length", Integer.toString(content.length));}OutputStream output = null;try {output = conn.getOutputStream();output.write(content);output.flush();} finally {if (output != null) try { output.close(); } catch (Exception e) { }}}return readContent(conn.getResponseCode() == 200 ? conn.getInputStream() : conn.getErrorStream(), getCharset(conn)); } catch (Exception e) {return null;} finally {if (conn != null) conn.disconnect();}}public static String encodeParams(Map<String, String> params, String paramsEncoding) throws Exception {boolean isFirst = true;StringBuilder encodedParams = new StringBuilder();for (Map.Entry<String, String> entry : params.entrySet()) {if (isFirst) isFirst = false; else encodedParams.append('&');encodedParams.append(URLEncoder.encode(entry.getKey(), paramsEncoding));encodedParams.append('=');encodedParams.append(URLEncoder.encode(entry.getValue(), paramsEncoding));}return encodedParams.toString();}public static String CHARSET_DEF = DEF_();private static String CHARSET_STR = "charset=";private static int CHARSET_STR_LEN = CHARSET_STR.length();private static String getCharset(HttpURLConnection conn) {String contentType = conn.getHeaderField("Content-Type");int length = contentType != null ? contentType.length() : 0;if (length < CHARSET_STR_LEN) {return CHARSET_DEF;}int pos = contentType != null ? contentType.indexOf("charset=") : -1;if (pos < 0) {return CHARSET_DEF;}return contentType.substring(pos + CHARSET_STR_LEN);}private static String readContent(InputStream input, String charset) throws Exception {try {int APPEND_LEN = 4 * 1024;int offset = 0;byte[] data = new byte[APPEND_LEN];while (true) {int len = input.read(data, offset, data.length - offset);if (len == -1) {break;}offset += len;if (offset >= data.length) {data = Arrays.copyOf(data, offset + APPEND_LEN);}}return charset != null ? new String(data, 0, offset, charset) : new String(data, 0, offset);} finally {if (input != null) try { input.close(); } catch (Exception e) { }}}}。
Android封装的http请求实用工具类
Android封装的http请求实用工具类Android封装的http请求实用工具类作者:字体:[增加减小] 类型:转载提供一个Android封装的http请求实用工具类,在做ANDROID 网络开发中这个经常要用到,大家可以参考下面的工具类修改成自己的工具复制代码代码如下:import java.io.BufferedReader;import java.io.InputStreamReader;import .URLEncoder;import java.security.KeyStore;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Map.Entry;import org.apache.http.HttpResponse;import org.apache.http.HttpVersion;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.conn.ClientConnectionManager;import org.apache.http.conn.scheme.PlainSocketFactory;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;importorg.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;import org.apache.http.message.BasicNameValuePair;import org.apache.http.params.BasicHttpParams;import org.apache.http.params.HttpParams;import org.apache.http.params.HttpProtocolParams;import org.apache.http.protocol.HTTP;import org.apache.http.util.EntityUtils;import android.content.Context;import .ConnectivityManager;/*** 网络工具类** @author malinkang**/public class NetUtils {/*** 对网络连接状态进行判断** @return true, 可用; false,不可用*/public static boolean isOpenNetwork(Context context) {ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);if (connManager.getActiveNetworkInfo() != null) {return connManager.getActiveNetworkInfo().isAvailable();}return false;}/*** get请求** @param urlString* @param params* @return*/public static String getRequest(String urlString, Map<String, String> params) {try {StringBuilder urlBuilder = new StringBuilder();urlBuilder.append(urlString);if (null != params) {urlBuilder.append("?");Iterator<Entry<String, String>> iterator = params.entrySet() .iterator();while (iterator.hasNext()) {Entry<String, String> param = iterator.next();urlBuilder.append(URLEncoder.encode(param.getKey(), "UTF-8")).append('=').append(URLEncoder.encode(param.getValue(), "UTF-8"));if (iterator.hasNext()) {urlBuilder.append('&');}}}// 创建HttpClient对象HttpClient client = getNewHttpClient();// 发送get请求创建HttpGet对象HttpGet getMethod = new HttpGet(urlBuilder.toString()); HttpResponse response = client.execute(getMethod);// 获取状态码int res = response.getStatusLine().getStatusCode();if (res == 200) {StringBuilder builder = new StringBuilder();// 获取响应内容BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); for (String s = reader.readLine(); s != null; s = reader.readLine()) {builder.append(s);}return builder.toString();}} catch (Exception e) {}return null;}/*** post请求** @param urlString* @param params* @return*/public static String postRequest(String urlString,List<BasicNameValuePair> params) {try {// 1. 创建HttpClient对象HttpClient client = getNewHttpClient();// 2. 发get请求创建HttpGet对象HttpPost postMethod = new HttpPost(urlString);postMethod.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));HttpResponse response = client.execute(postMethod);int statueCode = response.getStatusLine().getStatusCode();if (statueCode == 200) {System.out.println(statueCode);return EntityUtils.toString(response.getEntity());}} catch (Exception e) {}return null;}// 保存时+当时的秒数,public static long expires(String second) {Long l = Long.valueOf(second);return l * 1000L + System.currentTimeMillis();}private static HttpClient getNewHttpClient() {try {KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());trustStore.load(null, null);SSLSocketFactory sf = new SSLSocketFactoryEx(trustStore);sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOST NAME_VERIFIER);HttpParams params = new BasicHttpParams();HttpProtocolParams.setVersion(params,HttpVersion.HTTP_1_1);HttpProtocolParams.setContentCharset(params,HTTP.UTF_8);SchemeRegistry registry = new SchemeRegistry();registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));registry.register(new Scheme("https", sf, 443));ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry);return new DefaultHttpClient(ccm, params);} catch (Exception e) {return new DefaultHttpClient();}}}另一种封装好的get请求,最近经常用的:复制代码代码如下:public class HttpUtils {private final static String TAG = "EasyTokenSevice";private final static int connectionTimeout = 5000;private static InputStream inputStream = null;private static String urlStr = null;private static boolean isConnecting;/*** 封装http get请求** @param url* @return is*/public static InputStream get(String url)throws IOException ,Exception {urlStr = url;isConnecting = true;HttpGet httpGet = new HttpGet(urlStr);HttpParams httpParameters = new BasicHttpParams();HttpConnectionParams.setConnectionTimeout(httpParamet ers,connectionTimeout);DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters);HttpResponse response = httpClient.execute(httpGet);if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {HttpEntity entity = response.getEntity();inputStream = entity.getContent();return inputStream;}else return null;}}您可能感兴趣的文章:•Android实现类似360,QQ管家那样的悬浮窗•Android开发笔记之:用Enum(枚举类型)取代整数集的应用详解•android 通过向viewpage中添加listview来完成滑动效果(类似于qq滑动界面)•Android开发之图形图像与动画(一)Paint和Canvas类学习•android 类似微信的摇一摇功能实现思路及代码•Android类FileDownloadList分析。
httpspost设置代理发送请求
httpspost设置代理发送请求本⽂主要是对http和https 发送post请求所做⼯具类,⽅法中有两个参数:https(是否是https地址)和proxy(是否使⽤代理)。
http和https主要使⽤apache的基础jar包,代理地址可从配置⽂件中获取。
好了,废话不多说,直接上代码:1. https请求类public class HttpProxyPost {private static Logger logger = LoggerFactory.getLogger(HttpProxyPost.class);private static PropertiesConfiguration config = PropertiesUtils.INSTANCE.getConfig();private static CloseableHttpClient client = null;public static String requestWithPost(String postUrl, JSONObject reqJson, Boolean https, Boolean proxy) {HttpResponse rsp = null;try {client = SSLClient.getHttpsClient(https);} catch (Exception e) {logger.error("获取httpCliet失败");}HttpPost post = new HttpPost(postUrl);if (proxy) {String proxyIP = config.getString("proxyIP");int proxyPort = Integer.parseInt(config.getString("proxyPort"));("使⽤代理发送请求:{}:{}", proxyIP, proxyPort);HttpHost proxyHost = new HttpHost(proxyIP, proxyPort);RequestConfig reqConfig = RequestConfig.custom().setProxy(proxyHost).build();post.setConfig(reqConfig);}StringEntity params = null;String rspStr = "";try {params = new StringEntity(reqJson.toString(), "utf-8");params.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));params.setChunked(true);post.addHeader("content-type", "application/json");post.setEntity(params);rsp = client.execute(post);HttpEntity entity = rsp.getEntity();String rspString = EntityUtils.toString(entity, "utf-8");JSONObject rspJson = JSONObject.parseObject(rspString);("请求返回报⽂:{}", rspJson);rspStr = rspJson.toString();} catch (Exception e) {("外调异常::{}", e.getMessage());} finally {client.getConnectionManager().shutdown();}return rspStr;}}2. 创建https clientpublic class SSLClient {private static HttpClientBuilder builder;public static CloseableHttpClient getHttpsClient(Boolean https)throws KeyManagementException, NoSuchAlgorithmException {if (builder == null) {builder = HttpClientBuilder.create();}if (!https) {return builder.build();} else {X509TrustManager tm = new X509TrustManager() {@Overridepublic X509Certificate[] getAcceptedIssuers() {return null;}@Overridepublic void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {// TODO Auto-generated method stub}@Overridepublic void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {// TODO Auto-generated method stub}};SSLContext ctx = SSLContext.getInstance("TLS");ctx.init(null, new TrustManager[] { tm }, null);SSLSocketFactory ssf = new SSLSocketFactory(ctx, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); builder.setSSLSocketFactory(ssf);}return builder.build();}。
Fiddler抓取https请求
1、Fiddler抓取https请求设置方式。
(1)安装fiddler后,首次抓取https请求需要安装证书。
菜单项"Tools”》“Options..",在弹出的Options窗口中,点选项卡“HTTPS”;(2)在Options窗口HTTPS选项卡,依次勾选"Decrypt HTTPS trafic”、“lgnore server certificate errors(unsafe)(3)在Options窗口HTTPS选项卡,依次点“Actions”》“Export Root Certificate to Desktop 至此,完成将根证书下载到本地桌面设置之后就能抓到https请求了2、Fiddler过滤数据每次都能抓到很多请求,浏览器上面有别的窗口实时发送请求,fiddler都能抓到,我只想抓我想要的数据怎么办???(1)过滤;其他不要的数据过滤只想抓某个接口只捕获指定的hosls,多个域名用,隔开这下而还有进程过滤。
操作步骤:A、在fiddler页面点击右边页面的Filters,勾选Use Filters;hosts选择show only the following hosts;在下面文本框中输入网地址。
B、输入完成后点击右上角action》》Run Filtereset now。
最后实现过滤效果。
(2)如果想抓取多个网址的,在第三步输入网址时输入多个地址即可,中间用分号隔开,如下图。
3、Fiddler删除数据(1)全部删除:点击工具栏中的X后,选择Remove all。
页面所有抓取数据均被删除。
X号下也有其它格式的删除,可以自行操作学习。
(2)单个删除:选中要删除的数据,然后点击键盘delete键;或者右键点击要删除的数据,然后选择Remove---Selected Sessions(3)多个删除:按住shift+delete进行删除未选中的接口请求。
或者右键点击要删除的数据,然后选择Remove---Unselected Sessions。
Hutools之http工具类
Hutools之 http工具类
Hutools请求网络资源使用的工具类:HttpRequest和HttpResponse
Get方式请求数据
Get方式Leabharlann 求数据 Map<String,Object> paramMap = new HashMap<>(); //map中带不带参数都可以这样用 HttpResponse httpResponse = HttpRequest.get(url).form(paramMap).timeout(time * 1000).execute(); int status = httpResponse.getStatus(); System.out.println(httpResponse.body());
POST方式请求数据
(1)x-www-form-urlencoded形式的参数 Map<String,Object> paramMap = new HashMap<>(); HttpResponse httpResponse = HttpRequest.post(url).form(paramMap).timeout(time * 1000).execute();
int status = httpResponse.getStatus(); (2)application/json形式的参数 Map<String,Object> paramMap = new HashMap<>(); paramMap.put("username,"jerry"); Gson gson = new Gson(); String param = hson.toJson(paramMap); //转换json数据 HttpResponse httpResponse = HttpRequest.post(url).body(param , "application/json").timeout(time * 1000).execute(); int status = httpResponse.getStatus
网页测试HTTP请求模拟必备工具PostMan
网页测试HTTP请求模拟必备工具PostManPostman是一个非常棒的Chrome扩展插件,提供功能强大的API & HTTP 请求调试。
它能够发送任何类型的HTTP requests (GET, HEAD, POST, PUT..),附带任何数量的参数+ headers。
postman秉承了一贯以来google工具强大,易用的特质。
独乐乐不如众乐乐,特此共享出来给大伙。
Postman介绍Postman是google开发的一款功能强大的网页调试与发送网页HTTP请求,并能运行测试用例的的Chrome插件。
其主要功能包括:•模拟各种HTTP requests从常用的 GET、POST 到 RESTful 的 PUT 、DELETE …等等。
甚至还可以发送文件、送出额外的 header。
•Collection 功能(测试集合)Collection 是 requests的集合,在做完一個测试的時候,你可以把這次的 request 存到特定的 Collection 里面,如此一來,下次要做同样的测试时,就不需要重新输入。
而且一个collection可以包含多条request,如果我们把一个request当成一个test case,那collection就可以看成是一个test suite。
通过collection的归类,我们可以良好的分类测试软件所提供的API.而且Collection 还可以Import 或是Share 出來,让团队里面的所有人共享你建立起來的Collection。
•人性化的Response整理一般在用其他工具來测试的時候,response的内容通常都是纯文字的 raw,但如果是 JSON ,就是塞成一整行的 JSON。
这会造成阅读的障碍,而Postman 可以针对response内容的格式自动美化。
JSON、 XML 或是 HTML 都會整理成我们可以阅读的格式•内置测试脚本语言Postman支持编写测试脚本,可以快速的检查request的结果,并返回测试结果•设定变量与环境Postman 可以自由设定变量与Environment,一般我们在编辑request,校验response的时候,总会需要重复输入某些字符,比如url,postman允许我们设定变量来保存这些值。
resttemplate header 参数
resttemplate header 参数RestTemplate 是 Spring 框架中的一个用于发送 HTTP/HTTPS 请求的工具类。
它简化了开发者发送 HTTP 请求的代码,让开发者只需要关注业务数据和请求方式,而不需要关注网络细节。
RestTemplate 中可以设置 header 参数,这篇文章将会讲解 header 参数的使用。
一、什么是 Header 参数HTTP 协议中除了 URL 之外,还有一个很重要的概念就是 Header,中文翻译叫做头部信息。
Header 是 HTTP 请求和响应中的一部分,它包含了一些重要的信息,比如请求方式、请求时间、请求数据类型、返回数据类型等等。
Header 信息是客户端和服务器之间通信的一个必要的部分。
RestTemplate 可以通过设置 header 参数来实现访问 HTTP 请求时,向服务器传递一些额外的信息,可以是必要的安全参数、认证参数、鉴权参数等等。
Header 参数可以加强 HTTP 访问的安全性和可靠性。
1. 通过 HttpEntity 设置 Header 参数:HttpEntity 是 HttpHeaders 和请求体的封装。
它可以设置请求的头部信息、请求体信息。
```javaHttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_JSON_UTF8);HttpEntity<String> httpEntity = new HttpEntity<>("请求体", headers);ResponseEntity<String> responseEntity = restTemplate.exchange("请求地址", HttpMethod.POST, httpEntity, String.class);String responseBody = responseEntity.getBody();```上述代码中,首先创建了一个 HttpHeaders 实例,然后调用 setContentLength 方法设置了请求体的类型。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
HTTPS请求package com.sunzk.dreamsunlight.weixin.util;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import .ConnectException;import .URL;import .ssl.HttpsURLConnection; import .ssl.SSLContext;import .ssl.SSLSocketFactory; import .ssl.TrustManager;import net.sf.json.JSONException;import net.sf.json.JSONObject;import org.apache.log4j.Logger;importcom.sunzk.dreamsunlight.weixin.certificate.MyX509 TrustManager;import com.sunzk.dreamsunlight.weixin.model.Menu; importcom.sunzk.dreamsunlight.weixin.token.AccessToken;/**** @ClassName: WeiXinHttpsUtil*<p>* @Description: TODO(微信HTTPS请求工具类)*<p>* @author sunzk-dreamsunlight-QQ(1131341075)*<p>* @date 2016-11-14 上午10:05:56*<p>*/public class WeiXinHttpsUtil {private static Logger logger =Logger.getLogger(WeiXinHttpsUtil.class);// 获取access_token的接口地址(GET)限200(次/天)public final static String access_token_url = "https:///cgi-bin/token?grant_ty pe=client_credential&appid=APPID&secret=APPSECRET ";/*** 发起https请求并获取结果** @param requestUrl 请求地址* @param requestMethod 请求方式(GET、POST)* @param outputStr 提交的数据* @return JSONObject(通过JSONObject.get(key)的方式获取json对象的属性值)*/public static JSONObject httpRequest(String requestUrl, String requestMethod, String outputStr) {JSONObject jsonObject = null;StringBuffer buffer = new StringBuffer();try {// 创建SSLContext对象,并使用我们指定的信任管理器初始化TrustManager[] tm = { newMyX509TrustManager() };SSLContext sslContext =SSLContext.getInstance("SSL", "SunJSSE");sslContext.init(null, tm, newjava.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 =JSONUtils.toJSONObject(buffer.toString());} catch (ConnectException ce) {("Weixin server connection timed out.");} catch (Exception e) {("https request error:{}", e);}return jsonObject;}/*** 获取access_token** @param appid 凭证* @param appsecret 密钥* @return*/public static AccessToken getAccessToken(String appid, String appsecret) {AccessToken accessToken = null;String requestUrl =access_token_url.replace("APPID",appid).replace("APPSECRET", appsecret);JSONObject jsonObject =httpRequest(requestUrl, "GET", null);// 如果请求成功if (null != jsonObject) {try {accessToken = new AccessToken();accessToken.setAccess_token(jsonObject.getString( "access_token"));accessToken.setExpires_in(jsonObject.getInt("expi res_in"));} catch (JSONException e) {("获取token失败 errcode:{} errmsg:{}"+jsonObject.getInt("errcode")+jsonObjec t.getString("errmsg"));accessToken = null;// 获取token失败 }}return accessToken;}public static void main(String[] args){String url ="https:///cgi-bin/material/batch get_material?access_token=vtKMZ09f7uuoB0s9Otn2g8Q IbCksRYRPJbKwBUB37wM0vhTQchYBC8gXV2OQjYmu8GcYhF1s dkpSzbu0dge6K_2qh5N6po3RMNpEA-A0WwgCQXgADAKYF"; String requestMethod = "GET";JSONObject obj =httpRequest(url,requestMethod,null);String info = JSONUtils.toJSONString(obj); System.out.println("<------返回信息------>"+info);}}HTTP请求package com.sunzk.dreamsunlight.weixin.util;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import .URL;import .URLConnection;import .URLEncoder;import java.util.Map;/**** @ClassName: HttpUtil*<p>* @Description: TODO(HttpRequest请求工具类) *<p>* @author sunzk-dreamsunlight-QQ(1131341075) *<p>* @date 2016-11-11 上午10:44:44*<p>*/public class HttpUtil {/*** 使用Get方式获取数据** @param url* URL包括参数,http://HOST/XX?XX=XX&XXX=XXX* @param charset* @return*/public static String sendGet(String url, String charset) {String result = "";BufferedReader in = null;try {URL realUrl = new URL(url);// 打开和URL之间的连接URLConnection connection = realUrl.openConnection();// 设置通用的请求属性connection.setRequestProperty("accept", "*/*");connection.setRequestProperty("connection","Keep-Alive");connection.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");// 建立实际的连接connection.connect();// 定义 BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(connection.getInputStream(), charset));String line;while ((line = in.readLine()) != null) { result += line;}} catch (Exception e) {System.out.println("发送GET请求出现异常!" + e);e.printStackTrace();}// 使用finally块来关闭输入流finally {try {if (in != null) {in.close();}} catch (Exception e2) {e2.printStackTrace();}}return result;}/*** POST请求,字符串形式数据* @param url 请求地址* @param param 请求数据* @param charset 编码方式*/public static String sendPostUrl(String url, String param, String charset) {PrintWriter out = null;BufferedReader in = null;String result = "";try {URL realUrl = new URL(url);// 打开和URL之间的连接URLConnection conn = realUrl.openConnection();// 设置通用的请求属性conn.setRequestProperty("accept","*/*");conn.setRequestProperty("connection", "Keep-Alive");conn.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");// 发送POST请求必须设置如下两行conn.setDoOutput(true);conn.setDoInput(true);// 获取URLConnection对象对应的输出流out = new PrintWriter(conn.getOutputStream());// 发送请求参数out.print(param);// flush输出流的缓冲out.flush();// 定义BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(conn.getInputStream(), charset));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {System.out.println("发送 POST 请求出现异常!" + e);e.printStackTrace();}// 使用finally块来关闭输出流、输入流finally {try {if (out != null) {out.close();}if (in != null) {in.close();}} catch (IOException ex) {ex.printStackTrace();}}return result;}/*** POST请求,Map形式数据* @param url 请求地址* @param param 请求数据* @param charset 编码方式*/public static String sendPost(String url, Map<String, String> param,String charset) {StringBuffer buffer = new StringBuffer(); if (param != null && !param.isEmpty()) { for (Map.Entry<String, String> entry : param.entrySet()) {buffer.append(entry.getKey()).append("=").append(URLEncoder.encode(e ntry.getValue())).append("&");}}buffer.deleteCharAt(buffer.length() - 1);PrintWriter out = null;BufferedReader in = null;String result = "";try {URL realUrl = new URL(url);// 打开和URL之间的连接URLConnection conn = realUrl.openConnection();// 设置通用的请求属性conn.setRequestProperty("accept","*/*");conn.setRequestProperty("connection", "Keep-Alive");conn.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");// 发送POST请求必须设置如下两行conn.setDoOutput(true);conn.setDoInput(true);// 获取URLConnection对象对应的输出流out = new PrintWriter(conn.getOutputStream());// 发送请求参数out.print(buffer);// flush输出流的缓冲out.flush();// 定义BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(conn.getInputStream(), charset));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {System.out.println("发送 POST 请求出现异常!" + e);e.printStackTrace();}// 使用finally块来关闭输出流、输入流finally {try {if (out != null) {out.close();}if (in != null) {in.close();}} catch (IOException ex) {ex.printStackTrace();}}return result;}public static void main(String[] args) {String url = "/";String encode = "GB2312";String content = sendGet(url,encode);System.out.println("<-------------HttpRquest 请求结果-------------->"+content);}}。