http发送
package cn.com.yitong.wdph.util;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.ProtocolException;
import java.net.URL;
import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.alibaba.fastjson.JSONObject;
import cn.com.yitong.ares.error.AresRuntimeException;
import cn.com.yitong.ares.net.NetConst;
/**
* 简易http通信,发往指定地址
*
* @author
*/
public class WdphHttpSendUtils {
private static Logger logger = LoggerFactory.getLogger(WdphHttpSendUtils.class);
private static int connectTimeOut = 5000;
private static int readTimeOut = 90000;
public static JSONObject sendHttp(JSONObject request, String url) {
logger.debug("-简易http通信,发往指定地址-run--");
// ----------http请求配置----------
HttpURLConnection httpURLConnection = null;
// out部分
OutputStream outputStream = null;
// in部分
InputStream inputStream = null;
InputStreamReader inputStreamReader = null;
BufferedReader bufferedReader = null;
try {
httpURLConnection = (HttpURLConnection) new URL(url).openConnection();
// ----------设置请求属性信息----------
setHttpConnection(httpURLConnection);
if (logger.isDebugEnabled()) {
logger.debug("request headers:{}", httpURLConnection.getRequestProperties());
}
// 获取URLConnection对象对应的输出流
outputStream = httpURLConnection.getOutputStream();
// 发送请求参数
if (logger.isDebugEnabled()) {
logger.debug("request body:{}", request.toJSONString());
}
outputStream.write(request.toJSONString().getBytes());
outputStream.flush();
// 获取URLConnection对象对应的输入流
inputStream = httpURLConnection.getInputStream();
inputStreamReader = new InputStreamReader(inputStream, NetConst.UTF_8);
bufferedReader = new BufferedReader(inputStreamReader);
StringBuffer sb = new StringBuffer();
String line;
while ((line = bufferedReader.readLine()) != null) {
sb.append(line);
}
JSONObject jsb = JSONObject.parseObject(sb.toString());
if (logger.isDebugEnabled()) {
logger.debug("接收到渠道端返回的响应,响应报文为" + jsb.toJSONString());
}
return jsb;
} catch (Exception e) {
logger.error("调用渠道服务异常-->地址:{}\n 异常错误栈:\n{}", url, e);
throw new AresRuntimeException("net.connect.error", url);
} finally {
// ----------资源释放----------
IOUtils.closeQuietly(outputStream);
IOUtils.closeQuietly(inputStream);
IOUtils.closeQuietly(inputStreamReader);
IOUtils.closeQuietly(bufferedReader);
if (null != httpURLConnection) {
try {
httpURLConnection.disconnect();
} catch (Exception e) {
logger.warn("http释放资源失败,", e);
}
}
}
}
/**
* 设置请求属性信息
*
* @param httpConn
* @throws ProtocolException
*/
private static void setHttpConnection(HttpURLConnection httpConn) throws ProtocolException {
httpConn.setRequestMethod("POST");
httpConn.setConnectTimeout(connectTimeOut);
httpConn.setReadTimeout(readTimeOut);
httpConn.setRequestProperty("Connection", "keep-alive");
httpConn.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.8");
httpConn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
httpConn.setRequestProperty("Accept", "application/json");
httpConn.setRequestProperty("User-Agent",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.803.0 Safari/535.1");
httpConn.setDoInput(true);
httpConn.setDoOutput(true);
}
}
http发送的更多相关文章
- PHP实现RTX发送消息提醒
RTX是腾讯公司推出的企业级即时通信平台,大多数公司都在使用它,但是我们很多时候需要将自己系统或者产品的一些通知实时推送给RTX,这就需要用到RTX的服务端SDK,建议先去看看RTX的SDK开发文档( ...
- WPF 微信 MVVM 【续】发送部分QQ表情
今天主要记录的就是发送QQ表情, WPF 微信 MVVM里写了,后期为了发送QQ表情,需要把TextBox替换为RichTextBox,接下来就说说替换的过程. 一.支持Binding的RichTex ...
- [转]利用URLConnection来发送POST和GET请求
URL的openConnection()方法将返回一个URLConnection对象,该对象表示应用程序和 URL 之间的通信链接.程序可以通过URLConnection实例向该URL发送请求.读取U ...
- RestTemplate发送请求并携带header信息
1.使用restTemplate的postForObject方法 注:目前没有发现发送携带header信息的getForObject方法. HttpHeaders headers = new Http ...
- zookeeper源码分析之三客户端发送请求流程
znode 可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化等,一旦变化可以通知设置监控的客户端,这个功能是zookeeper对于应用最重要的特性,通过这个特性可以实现的功能包括配置的 ...
- C#发送邮箱
之前自己从来没有做过发送邮箱的功能,前段时间项目需要,在找了很多帖子之后,终于实现了. 之后有整理了一下,写了一个类.直接给类传递信息,就可以发送了. 这里还需要说明的是,发送邮箱需要开通POP3/S ...
- XAMARIN.ANDROID SIGNALR 实时消息接收发送示例
SignalR 是一个开发实时 Web 应用的 .NET 类库,使用 SignalR 可以很容易的构建基于 ASP.NET 的实时 Web 应用.SignalR 支持多种服务器和客户端,可以 Host ...
- Android中实现APP文本内容的分享发送与接收方法简述
谨记(指定选择器Intent.createChooser()) 开始今天的内容前,先闲聊一下: (1)突然有一天头脑风暴,对很多问题有了新的看法和见解,迫不及待的想要分享给大家,文档已经写好了,我需要 ...
- 跨域问题,前端主动向后台发送cookie
跨域是什么? 从一个域名的网页访问另一个域名的资源,就会出现跨域.只要协议.端口.域名有一个不同就会出现跨域 例如: 1.协议不同 http://www.baidu.com:80 和 https:/ ...
- 技术笔记:Indy IdSMTP支持腾讯QQ邮箱邮件发送
1.腾讯QQ邮箱的授权码问题 因为腾讯邮箱折腾了个底朝天,其要搞什么授权码登录第三方客户端,否则会报这个错误: 'Error: 请使用授权码登录.详情请看: http://service.mail.q ...
随机推荐
- 简单的xml数据库设计
我的需求 有时候系统需要存储一些简单的关系型属性,不考虑并发,不考虑性能(一次操作在几ms),数据库没有其他依赖引用,拿过来就可以用 为什么选xml作为数据库? 可读性好 实体的对应关系不严格 , 二 ...
- 自动化运维工具-Ansible之6-Jinja2模板
自动化运维工具-Ansible之6-Jinja2模板 目录 自动化运维工具-Ansible之6-Jinja2模板 Ansible Jinja2模板概述 Ansible Jinja2模板使用 Ansib ...
- excel字符串拼接
函数:CONCATENATE() 参数可以是文本值.数字或单元格引用. 文本值和数字使用双引号括住,单元格引用直接使用.例如 =CONCATENATE("abc",A2),设A2为 ...
- SSM框架整合模板
SSM框架整合--MAVEN依赖 spring方面(包含了springmvc): spring-webmvc:spring与mvc的整合依赖,主要包括spring的核心包和springmvc需要的包 ...
- 【并发编程】- 内存模型(针对JSR-133内存模型)篇
并发编程模型 1.两个关键问题 1)线程之间如何通信 共享内存 程之间共享程序的公共状态,通过写-读内存中的公共状态进行隐式通信 消息传递 程之间没有公共状态,线程之间必须通过发送消息来显式进行通信 ...
- hadoop fs -stat 查看文件状态
转载来自:https://blog.csdn.net/knowledgeaaa/article/details/24394287 当向HDFS上写文件时,可以通过设置dfs.block.size配置项 ...
- pixi.js 自定义光标样式
pixi 介绍 Pixi是一个超快的2D渲染引擎,通过Javascript和Html技术创建动画或管理交互式图像,从而制作游戏或应用. 项目地址:https://github.com/pixijs/p ...
- 如何限制电脑访问网址—使用Host限制访问网址
如何限制电脑访问网址-使用Host限制访问网址 1. 打开C:\Windows\System32\drivers\etc 2. 打开hosts 3. 修改host内容,如下示例 127.0.0.1 ...
- Tomcat配置上遇到的一些问题
Tomcat启动:在bin目录下双击startup.bat文件就行. 访问:在浏览器输入http://localhost:8080 回车访问的是自己 的界面: http://othersip:8080 ...
- 修改机器的hostname
vi /etc/sysconfig/network hostname=你想设置的主机名 不重启器的情况下使显示名称变成 hostname 主机名