package com.googosoft.until;

import java.io.IOException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.alibaba.fastjson.JSONArray;
import com.googosoft.model.HttpClientResult; /**
* @author songyan
* @version 2020年1月13日 下午1:57:15
* @desc HttpClient发送http请求工具类
*/
public class HttpClientUtil { protected static final Logger logger = LoggerFactory.getLogger(HttpClientUtil.class); /**
* 发送无参get请求
* @param url
* @return
* @throws ClientProtocolException
* @throws IOException
*/
public static HttpClientResult sendGetRequest(String url){
HttpClientResult result = new HttpClientResult();
CloseableHttpClient client = HttpClients.createDefault();
HttpGet get = new HttpGet(url);
CloseableHttpResponse response;
try {
response = client.execute(get);
HttpEntity entity = response.getEntity();
String content = EntityUtils.toString(entity);
result.setContent(content);
result.setCode(response.getStatusLine().getStatusCode());
} catch (ClientProtocolException e) {
logger.error("协议异常,堆栈信息如下", e);
} catch (IOException e) {
logger.error("网络异常,堆栈信息如下", e);
} finally {
try {
client.close();
} catch (Exception e) {
e.printStackTrace();
client = null;
}
}
return result;
} /**
* 发送无参put请求
* @param url
* @return
*/
public static HttpClientResult sendPutReq(String url) {
HttpClientResult result = new HttpClientResult();
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
HttpPut put = new HttpPut(url);
try {
HttpResponse httpResponse = httpClient.execute(put);
if (httpResponse.getStatusLine().getStatusCode() == 200) {
HttpEntity entity = httpResponse.getEntity();
String content = EntityUtils.toString(entity);
result.setContent(content);
}else{
result.setCode(httpResponse.getStatusLine().getStatusCode());
}
} catch (ClientProtocolException e) {
logger.error("协议异常,堆栈信息如下", e);
} catch (IOException e) {
logger.error("网络异常,堆栈信息如下", e);
} finally {
try {
httpClient.close();
} catch (Exception e) {
e.printStackTrace();
httpClient = null;
}
}
return result;
} public static JSONArray StrToJsonArray(String content) { return null;
} }

Httpclient 工具类(get,put)的更多相关文章

  1. Java开发小技巧(五):HttpClient工具类

    前言 大多数Java应用程序都会通过HTTP协议来调用接口访问各种网络资源,JDK也提供了相应的HTTP工具包,但是使用起来不够方便灵活,所以我们可以利用Apache的HttpClient来封装一个具 ...

  2. 基于HttpClient4.5.2实现的HttpClient工具类

    1.maven依赖: <dependency> <groupId>org.apache.commons</groupId> <artifactId>co ...

  3. 转:轻松把玩HttpClient之封装HttpClient工具类(一)(现有网上分享中的最强大的工具类)

    搜了一下网络上别人封装的HttpClient,大部分特别简单,有一些看起来比较高级,但是用起来都不怎么好用.调用关系不清楚,结构有点混乱.所以也就萌生了自己封装HttpClient工具类的想法.要做就 ...

  4. 使用单例模式实现自己的HttpClient工具类

    引子 在Android开发中我们经常会用到网络连接功能与服务器进行数据的交互,为此Android的SDK提供了Apache的HttpClient 来方便我们使用各种Http服务.你可以把HttpCli ...

  5. Android开发实现HttpClient工具类

    在Android开发中我们经常会用到网络连接功能与服务器进行数据的交互,为此Android的SDK提供了Apache的HttpClient来方便我们使用各种Http服务.你可以把HttpClient想 ...

  6. httpclient工具类,post请求发送json字符串参数,中文乱码处理

    在使用httpclient发送post请求的时候,接收端中文乱码问题解决. 正文: 我们都知道,一般情况下使用post请求是不会出现中文乱码的.可是在使用httpclient发送post请求报文含中文 ...

  7. 通过Httpclient工具类,实现接口请求

    package luckyweb.seagull.util; import org.apache.http.NameValuePair; import org.apache.http.client.e ...

  8. 轻松把玩HttpClient之封装HttpClient工具类(五),携带Cookie的请求

    近期更新了一下HttpClientUtil工具类代码,主要是加入了一个參数HttpContext,这个是用来干嘛的呢?事实上是用来保存和传递Cookie所须要的. 由于我们有非常多时候都须要登录.然后 ...

  9. HttpClient工具类v1.7

    package com.cucpay.fundswap.util; import java.io.IOException; import java.net.SocketTimeoutException ...

随机推荐

  1. php环境安装问题

    1.如果图标是黄色,查看apache等服务是否全部启用:   2.如果启用了,查看80端口是否被占用->如果测试端口表明被占用->修改httpd.config文件:     1).Ctrl ...

  2. JS模板引擎-Mustache模板引擎使用实例1-表格树

    1 使用实例代码 1.jsp代码 <!DOCTYPE html> <html lang="zh-CN"> <head> <title> ...

  3. HTML文本域标签

    textarea文本域 cols指定列数 rows行数(不够用会自动扩容)

  4. 高通量计算框架HTCondor(六)——拾遗

    目录 1. 正文 1.1. 一些问题 1.2. 使用建议 2. 相关 1. 正文 1.1. 一些问题 如果真正要将HTCondor高通量计算产品化还需要很多工作要做,HTCondor并没有GUI界面, ...

  5. 其他 - YAML 入门

    概述 简单介绍 YAML 语言 背景 很多地方, 都在使用 YAML k8s spring 其他 准备 验证工具 YAML.YML在线格式化校验工具 一个 YAML 转换 JSON 的工具 通常来说, ...

  6. s 贪心

    区间问题: 区间选点问题   右端点排序,now标记点. 数轴上有N个闭区间[Ai, Bi].取尽量少的点,使得每个区间内都至少有一个点(不同区间内含的点可以是同一个). 输入 第1行:一个整数N(1 ...

  7. [WC2006] 水管局长 - Link Cut Tree

    离线后逆序处理所有操作,那么就变成了加边询问,根据MST的性质,显然维护MST询问链上max即可 #include <bits/stdc++.h> using namespace std; ...

  8. [一本通学习笔记] 字典树与 0-1 Trie

    字典树中根到每个结点对应原串集合的一个前缀,这个前缀由路径上所有转移边对应的字母构成.我们可以对每个结点维护一些需要的信息,这样即可以去做很多事情. #10049. 「一本通 2.3 例 1」Phon ...

  9. Mybatis面试问题集锦

    1.#{}和${}的区别是什么? 答:mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值: mybatis在处理 $ { } 时,就 ...

  10. rf关键字

    1.获取字典中的key ${b} Set Variable ${a}[0][dealer_buy_price] Log ${b}   2.${b}的float类型转换string 再和后面比较 Sho ...