import com.jiuqu.jollykeys.common.util.JsonUtil;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.NameValuePair;
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.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import java.io.IOException;
import java.util.*; import org.springframework.stereotype.Service; /**
* @author cloud
* @description
* @date 2017年06月15日
*/
@Service
public class HttpClientService { private final Logger logger = LoggerFactory.getLogger(HttpClientService.class); @Autowired
private CloseableHttpClient httpClient;
@Autowired
private RequestConfig requestConfig; /**
* 处理get请求.
*
* @param url 请求路径
* @return json
*/
public String get(String url) {
logger.info("请求地址(get):" + url);
//请求结果
String content = "";
try {
//实例化get方法
HttpGet httpget = new HttpGet(url);
httpget.setConfig(requestConfig);
//执行get方法
CloseableHttpResponse response = httpClient.execute(httpget);
if (response.getStatusLine().getStatusCode() == 200) {
content = EntityUtils.toString(response.getEntity(), "utf-8");
logger.info("HTTP请求返回参数(get):" + content);
}
} catch (IOException e) {
e.printStackTrace();
}
return content;
} /**
* 处理get请求.
*
* @param url 请求路径
* @param headers 请求头信息
* @param params 请求参数
*/
public String get(String url, Map<String, String> headers, Map<String, String> params) {
logger.info("请求地址(get):" + url);
logger.info("请求参数(get):" + JsonUtil.gson.toJson(params));
String content = "";
try {
//实例化get方法
HttpGet httpget = new HttpGet(buildUrl(url, params));
httpget.setConfig(requestConfig);
//设置请求头
for (Map.Entry<String, String> e : headers.entrySet()) {
httpget.addHeader(e.getKey(), e.getValue());
} CloseableHttpResponse response = httpClient.execute(httpget);
if (response.getStatusLine().getStatusCode() == 200) {
content = EntityUtils.toString(response.getEntity(), "utf-8");
logger.info("HTTP请求返回参数(get):" + content);
}
} catch (Exception e) {
e.printStackTrace();
}
return content;
} /**
* 处理post请求.
*
* @param url 请求路径
* @param params 参数
* @return json
*/
public String post(String url, Map<String, String> params) {
logger.info("请求地址(post):" + url);
logger.info("请求参数(post):" + JsonUtil.gson.toJson(params));
//结果
String content = "";
try {
//实例化post方法
HttpPost httpPost = new HttpPost(url);
httpPost.setConfig(requestConfig);
//处理参数
List<NameValuePair> nvps = new ArrayList<>();
if (params != null) {
Set<String> keySet = params.keySet();
for (String key : keySet) {
nvps.add(new BasicNameValuePair(key, params.get(key)));
}
}
//提交的参数
UrlEncodedFormEntity uefEntity = new UrlEncodedFormEntity(nvps, "UTF-8");
//将参数给post方法
httpPost.setEntity(uefEntity);
//执行post方法
CloseableHttpResponse response = httpClient.execute(httpPost);
if (response.getStatusLine().getStatusCode() == 200) {
content = EntityUtils.toString(response.getEntity(), "utf-8");
logger.info("HTTP请求返回参数(post):" + content);
}
} catch (IOException e) {
e.printStackTrace();
}
return content;
} public String post2(String url, Map<String, Object> params) {
logger.info("请求地址(post):" + url);
logger.info("请求参数(post):" + JsonUtil.gson.toJson(params));
//结果
String content = "";
try {
//实例化post方法
HttpPost httpPost = new HttpPost(url);
httpPost.setConfig(requestConfig);
//处理参数
List<NameValuePair> nvps = new ArrayList<>();
if (params != null) {
Set<String> keySet = params.keySet();
for (String key : keySet) {
nvps.add(new BasicNameValuePair(key,params.get(key).toString));
}
}
//提交的参数
UrlEncodedFormEntity uefEntity = new UrlEncodedFormEntity(nvps, "UTF-8");
//将参数给post方法
httpPost.setEntity(uefEntity);
//执行post方法
CloseableHttpResponse response = httpClient.execute(httpPost);
if (response.getStatusLine().getStatusCode() == 200) {
content = EntityUtils.toString(response.getEntity(), "utf-8");
logger.info("HTTP请求返回参数(post):" + content);
}
} catch (IOException e) {
e.printStackTrace();
}
return content;
} /**
* 处理post请求.
*
* @param url 请求路径
* @param params 参数
* @return json
*/
public String post(String url, Map<String, String> headers, Map<String, String> params) {
logger.info("请求地址(post):" + url);
logger.info("请求参数(post):" + JsonUtil.gson.toJson(params));
//结果
String content = "";
try {
//实例化post方法
HttpPost httpPost = new HttpPost(url);
httpPost.setConfig(requestConfig); for (Map.Entry<String, String> e : headers.entrySet()) {
httpPost.addHeader(e.getKey(), e.getValue());
} //处理参数
List<NameValuePair> nvps = new ArrayList<>();
if (params != null) {
Set<String> keySet = params.keySet();
for (String key : keySet) {
nvps.add(new BasicNameValuePair(key, params.get(key)));
}
}
//提交的参数
UrlEncodedFormEntity uefEntity = new UrlEncodedFormEntity(nvps, "UTF-8");
//将参数给post方法
httpPost.setEntity(uefEntity);
//执行post方法
CloseableHttpResponse response = httpClient.execute(httpPost);
if (response.getStatusLine().getStatusCode() == 200) {
content = EntityUtils.toString(response.getEntity(), "utf-8");
logger.info("HTTP请求返回参数(post):" + content);
}
} catch (IOException e) {
e.printStackTrace();
}
return content;
} private static String buildUrl(String host, Map<String, String> querys)
throws UnsupportedEncodingException {
StringBuilder sbUrl = new StringBuilder();
sbUrl.append(host);
if (null != querys) {
StringBuilder sbQuery = new StringBuilder();
for (Map.Entry<String, String> query : querys.entrySet()) {
if (0 < sbQuery.length()) {
sbQuery.append("&");
}
if (StringUtils.isBlank(query.getKey()) && !StringUtils.isBlank(query.getValue())) {
sbQuery.append(query.getValue());
}
if (!StringUtils.isBlank(query.getKey())) {
sbQuery.append(query.getKey());
if (!StringUtils.isBlank(query.getValue())) {
sbQuery.append("=");
sbQuery.append(URLEncoder.encode(query.getValue(), "utf-8"));
}
}
}
if (0 < sbQuery.length()) {
sbUrl.append("?").append(sbQuery);
}
} return sbUrl.toString();
} public static String do_post(String url, List<NameValuePair> name_value_pair) throws IOException {
        String body = "{}";
        DefaultHttpClient httpclient = new DefaultHttpClient();
        try {
            HttpPost httpost = new HttpPost(url);
            httpost.setEntity(new UrlEncodedFormEntity(name_value_pair, StandardCharsets.UTF_8));
            HttpResponse response = httpclient.execute(httpost);
            HttpEntity entity = response.getEntity();
            body = EntityUtils.toString(entity);
        finally {
            httpclient.getConnectionManager().shutdown();
        }
        return body;
    }
    public static String do_get(String url) throws ClientProtocolException, IOException {
        String body = "{}";
        DefaultHttpClient httpclient = new DefaultHttpClient();
        try {
            HttpGet httpget = new HttpGet(url);
            HttpResponse response = httpclient.execute(httpget);
            HttpEntity entity = response.getEntity();
            body = EntityUtils.toString(entity);
        finally {
            httpclient.getConnectionManager().shutdown();
        }
        return body;
    }
}

java 后台代码调用接口的更多相关文章

  1. Java后台代码调用Spring的@Service Bean的方式

    比如:在我的project中有一个类CompassIndexOperation,以: @Service("CompassIndexOperation") @Transactiona ...

  2. iOS 基于APNS消息推送原理与实现(包括JAVA后台代码)

    Push的原理: Push 的工作机制可以简单的概括为下图   图中,Provider是指某个iPhone软件的Push服务器,这篇文章我将使用.net作为Provider. APNS 是Apple ...

  3. pagebean pagetag java 后台代码实现分页 demo 前台标签分页 后台java分页

    java 后台代码实现分页 demo 实力 自己写的 标签分页 package com.cszoc.sockstore.util; import java.util.HashMap;import ja ...

  4. 在网页程序或Java程序中调用接口实现短信猫收发短信的解决方案

    方案特点: 在网页程序或Java程序中调用接口实现短信猫收发短信的解决方案,简化软件开发流程,减少各应用系统相同模块的重复开发工作,提高系统稳定性和可靠性. 基于HTTP协议的开发接口 使用特点在网页 ...

  5. js脚本中执行java后台代码

    使用场景:关闭页面弹窗时执行sql语句. 其实js里执行sql语句有多种方式. 方式一:直接在js代码里调用sql语句,原则上不能使用,因为这将sql直接暴露在客户端,安全性极差. 方式二:在js里运 ...

  6. java调用Linux执行Python爬虫,并将数据存储到elasticsearch中--(java后台代码)

    该篇博客主要是java代码,如需相应脚本及java连接elasticsearch工具类代码,请移步到上一篇博客(https://www.cnblogs.com/chenyuanbo/p/9973685 ...

  7. jquery.cookie.js && java后台代码 操作cookie实现记住当前用户输入信息代码

    下载jquery.cookie.js地址看这里:http://pan.baidu.com/s/1gdCPaN5 //初始化页面时验证是否记住了密码 $(document).ready(function ...

  8. java后台代码发送邮件

    1:安装  eyoumailserversetup 易邮邮件服务器 注册账号 2:安装Foxmail 登录以后会有个还原页面 3:测试 4:java 代码编写 配置文件: mail.host=http ...

  9. java通过HttpClient调用接口总结

    2.HttpClient 2.1简介: 最近看项目的代码,看到工程中有两个jar包张的很像,一个是commons.httpclient-3.1.jar,一个是httpclient4.2.1.jar,很 ...

随机推荐

  1. python基础6 迭代器 生成器

    可迭代的:内部含有__iter__方法的数据类型叫可迭代的,也叫迭代对象实现了迭代协议的对象 运用dir()方法来测试一个数据类型是不是可迭代的的. 迭代器协议是指:对象需要提供next方法,它要么返 ...

  2. [转]Java - 集合框架完全解析

    数据结构是以某种形式将数据组织在一起的集合,它不仅存储数据,还支持访问和处理数据的操作.Java提供了几个能有效地组织和操作数据的数据结构,这些数据结构通常称为Java集合框架.在平常的学习开发中,灵 ...

  3. 一个强大的封装好的pdo处理类

    php5.5后就不支持mysql扩展了,也就是说这以后都不能使用msyql_conncet之类的函数了.不过没有关系,pdo比mysql有更多优势,写法也很简单,下面贴出一个来自互联网的pdo处理类. ...

  4. Problem B: 农夫果园 简单点,出题的方式简单点

    我走过最长的路,就是教主的套路#include <iostream> #include <string> using namespace std; class Fruit { ...

  5. 阿里云centos配置postfix

    1. 为了防止垃圾邮件,先到域名控制面板设置好. MX A 记录及TXT记录 其中TXT记录如下  @  spf1 a mx ~all 意思就是使用spf1协议,允许a记录和MX记录对应的IP,不允许 ...

  6. localstorage本地定时缓存

    在做一个网站时,起初直接就是从服务器获取数据进行交互,没有用一些本地缓存做优化,项目做下来就特别卡,并且对服务器造成了很大的压力,经过请教,查询,找到这样一个定时缓存的例子.html5定时缓存,从数据 ...

  7. js函数整合队列顺序执行插件

    前言 在日常开发中,也许我们会遇到这样的一个问题.我们利用[发布订阅模式](如果不了解的可以直接访问此链接www.cnblogs.com/xiaoxiaokun- )去执行[发布]事件时,遇到函数内部 ...

  8. Velocity(5)——#macro 指令

    1 #macro(formatIncreaseData $increase) 2 #if(${product.onlineStatusFlag} =='0') 3 -- 4 #elseif(!$inc ...

  9. C#移位运算(左移和右移)

    C#是用<<(左移) 和 >>(右移) 运算符是用来执行移位运算. 左移 (<<) 将第一个操作数向左移动第二个操作数指定的位数,空出的位置补0.  左移相当于乘. ...

  10. C#中的Unsafe和Fixed

    托管代码 (managed code):由公共语言运行库环境(而不是直接由操作系统)执行的代码.托管代码应用程序可以获得公共语言运行库服务,例如自动垃圾回收.运行库类型检查和安全支持等.这些服务帮助提 ...