MyIfmHttpClient

package com.yd.ifm.client.caller.util.http;import java.util.Map;import com.yd.ifm.client.caller.model.ResponseData;
import com.yd.ifm.client.caller.util.http.HttpEnum.ContentTypeEnum;public interface IfmHttpClient {/*** 发送post数据* 200为正常的业务数据,202为IfmClient的一些授权不通过或者异常信息* headerMap 需要放在Http客户端的header中* data 为body中的业务数据* @param strUrlPath* @param params* @param encode* @return*/ResponseData postData(String strUrlPath, Map<String, String> headerMap, String data, String encode, ContentTypeEnum contentType);
}
package com.yundaex.wms.config.clent;import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;import org.apache.log4j.Logger;import com.yd.ifm.client.caller.model.ResponseData;
import com.yd.ifm.client.caller.util.http.HttpEnum.ContentTypeEnum;
import com.yd.ifm.client.caller.util.http.HttpEnum.RequestMethodEnum;
import com.yd.ifm.client.caller.util.http.IfmHttpClient;/*** <pre>*   Title: MyIfmHttpClient.java*   Description: *   Copyright: yundaex.com Copyright (c) 2017*   Company: 上海韵达货运有限公司* </pre>* * @author tonglele* @version 1.0* @date 2017年9月15日*/
public class MyIfmHttpClient implements IfmHttpClient {private final static Logger log = Logger.getLogger(MyIfmHttpClient.class);private final static String CONTENT_TYPE = "Content-Type";private final static String CONTENT_LENGTH = "Content-Length";private final static String ZERO = "0";@Overridepublic ResponseData postData(String strUrlPath, Map<String, String> params, String data, String encode,ContentTypeEnum contentType) {byte[] bodybyte = getRequestData(data, encode);// 获得请求体ResponseData responsedata = new ResponseData();OutputStream outputStream = null;InputStream inptStream = null;try {URL url = new URL(strUrlPath);HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();httpURLConnection.setConnectTimeout(20000); // 设置连接超时时间httpURLConnection.setDoInput(true); // 打开输入流,以便从服务器获取数据httpURLConnection.setDoOutput(true); // 打开输出流,以便向服务器提交数据httpURLConnection.setRequestMethod(RequestMethodEnum.POST.getMethod()); // 设置以Post方式提交数据httpURLConnection.setUseCaches(false); // 使用Post方式不能使用缓存httpURLConnection.setReadTimeout(60000); // 设置读取数据的超时时间// 添加控制权限的header
            addHeader(params, httpURLConnection);// 设置请求体的类型是文本类型
            httpURLConnection.setRequestProperty(CONTENT_TYPE, contentType.getType());// 设置请求体的长度
            httpURLConnection.setRequestProperty(CONTENT_LENGTH,bodybyte == null ? ZERO : String.valueOf(bodybyte.length));// 获得输出流,向服务器写入数据outputStream = httpURLConnection.getOutputStream();if (bodybyte != null)outputStream.write(bodybyte);outputStream.flush();int responsecode = httpURLConnection.getResponseCode(); // 获得服务器的响应码
            responsedata.setError_code(responsecode);// 200表示有正常的业务数据 202则表示有callee的异常if (responsecode == HttpURLConnection.HTTP_OK || responsecode == 202) {inptStream = httpURLConnection.getInputStream();responsedata.setData(dealResponseResult(inptStream));}} catch (IOException e) {log.error("error while using IfmHttpUtil" + e);return responsedata;} finally {if (outputStream != null) {try {outputStream.close();} catch (IOException e) {log.error("error while using IfmHttpUtil" + e);}}if (inptStream != null) {try {inptStream.close();} catch (IOException e) {log.error("error while using IfmHttpUtil" + e);}}}return responsedata;}private byte[] getRequestData(String content, String encode) {byte[] result = null;try {if (content != null)result = content.getBytes(encode);} catch (UnsupportedEncodingException e) {log.error("error while using IfmHttpUtil" + e);}return result;}/*** 处理服务器返回结果* * @param inputStream*            输入流* @return 返回处理后的String 字符串*/private String dealResponseResult(InputStream inputStream) {String resultData = null; // 存储处理结果ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();byte[] data = new byte[1024];int len = 0;try {while ((len = inputStream.read(data)) != -1) {byteArrayOutputStream.write(data, 0, len);}resultData = new String(byteArrayOutputStream.toByteArray(), "utf-8");} catch (IOException e) {log.error("error while using IfmHttpUtil" + e);}return resultData;}/*** 将权限信息放在header中* * @param headerMapper* @param connection*/private void addHeader(Map<String, String> headerMapper, HttpURLConnection connection) {for (Map.Entry<String, String> entry : headerMapper.entrySet()) {connection.addRequestProperty(entry.getKey(), entry.getValue());}}}

 

转载于:https://www.cnblogs.com/tonggc1668/p/7525304.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571965.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 只去除英文_如何使用 Python 制作词云(Word Cloud)-英文词云篇

wordcloud 安装报错与解决虽然网络上也有各种工具可以一键生成词云&#xff0c;但是使用Python制作词云感觉是一件很酷的事情。作为一个 Python 小白&#xff0c;使用 Python 的过程并不那么轻松。比如最最基础的&#xff0c;用Python 制作词云需要安装第三方库 wordcloud&…

坑爹的水题之“元芳你怎么看”

题目大意&#xff1a; 一些人分银子&#xff0c;如果每个人分x两&#xff0c;那么还有y两分不出去&#xff1b;如果每个人分i 两的话那么还差 j 两银子。问你输入x&#xff0c;y&#xff0c;i&#xff0c;j 四个整数&#xff0c;能否成立。 解题思路&#xff1a; 啥叫思路&…

mysql 查看trige_mysql查看所有存储过程,函数,视图,触发器,表

查询数据库中的存储过程和函数方法一&#xff1a;select name from mysql.proc where db your_db_name and type PROCEDURE //存储过程select name from mysql.proc where db your_db_name and type FUNCTION //函数方法二&#xff1a;show procedure status; //存储过…

centos7 卸载 gitlab

标黑的就是关键命令&#xff0c;先停止gitlab服务&#xff0c;然后rpm -e卸载&#xff0c;然后查看剩余gitlab进程&#xff0c;然后杀死主进程&#xff0c;然后删除所有相关目录 1 [liuyxMiWiFi-R3L-srv ~]$ sudo gitlab-ctl stop2 [sudo] password for liuyx: 3 liuyx 不在 su…

webstrom中打包的详细_webpack打包体积优化

webpackwebpack打包体积优化webpack官方定义webpack 是一个模块打包器。webpack 的主要目标是将 JavaScript 文件打包在一起&#xff0c;打包后的文件用于在浏览器中使用&#xff0c;但它也能够胜任转换(transform)、打包(bundle)或包裹(package)任何资源(resource or asset)。…

201621123003《Java程序设计》第一周学习总结

#1. 本周学习总结 本周主要学习了Java的jdk、jvm、jre等基本概念&#xff0c;Java的发展史&#xff0c;知道Java语言的跨平台、面向对象等主要特点&#xff0c;简单了解了Java程序的编译和运行过程。对于学习Java&#xff0c;我的学习和编程能力还是很吃力的&#xff0c;但还是…

mysql jar jdk1.6_Windows下JDK1.6+MySQL+MyEclipse开发环境的配置

1. 安装JDK&#xff0c;放在E盘 “E:\JDK6”,第二个JRE默认路径安装&#xff1b;2. 设置环境变量 (系统变量)&#xff1a;(1)创建JAVA_HOME E:\JDK6(2)Path ;%JAVA_HOME%\bin(3)新建CLASSES .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar3. 安装MyEclipse&#xff0c…

SpringMvc三大组件详解

SpringMvc框架结构图 处理器映射器&#xff1a;用户请求路径到Controller方法的映射处理器适配器&#xff1a;根据handler(controlelr类&#xff09;的开发方式&#xff08;注解开发/其他开发&#xff09; 方式的不同区寻找不同的处理器适配器视图解析器&#xff1a;根据handl…

MySQL笔记创建表结构_MySQL表结构笔记9

本篇大纲MySQL数据表创建表创建主键AUTO_INCREATE指定默认值更新表结构删除表&#xff0c;重命名表01&#xff1a;表MySQL 数据库的表是一个二维表&#xff0c;由一个或多个数据列构成每个数据列都有它的特定类型&#xff0c;该类型决定了MySQL如何看待该列数据02&#xff1a;创…

ubuntu 转mysql_(转)Ubuntu 16.04下安装MySQL

转自&#xff1a;https://www.linuxidc.com/Linux/2017-06/144805.htm首先执行下面三条命令&#xff1a;sudo apt-get install mysql-serversudo apt-get install mysql-clientsudo apt-get install libmysqlclient-dev安装成功后可以通过下面的命令测试是否安装成功&#xff1…

在Github和oschina上搭建自己的博客网站

在Github上搭建 - 参考链接 搭建一个免费的&#xff0c;无限流量的Blog----github Pages和Jekyll入门 GitHub Jekyll 搭建并美化个人网站 用Jekyll搭建的Github Pages个人博客 在oschina上搭建 - 参考链接 免费个人博客搭建教程详解&#xff1a;HexoOSChina Hexo使用指南 hexo…

python 大智慧股池_跟我从零开始学会大智慧股票池自动交易

自从上次发表关于自动交易系列教程后&#xff0c;很多朋友对自动交易产生了极大兴趣&#xff0c;然而还有很多朋友因为没接触过股票池和自动交易&#xff0c;相对比较陌生&#xff0c;希望我能从更简单详细的角度来让刚接触的朋友更快的掌握股票自动交易的方法。所以有了次文&a…

python做工控机_工控机折腾小记

引言之前笔记本换下来的一块1T的2.5硬盘; 本来想着买个树莓派挂硬盘做个简单的 NAS, 鉴于性能问题, 后来某鱼入手了一个搭载赛扬 N2940 CPU 的工控机;基本配置:Intel Celeron N2940 4x 2.2491GHz / 4G / 32G SSD / USB2.0 x4 3.0 x1 / HDMI x2 / LAN x1 / DC 12V内部还有一个 …

js 自函数

函数基本概念&#xff1a; 函数声明&#xff1a;function box(){} 函数表达式&#xff1a;var box function(){}; 匿名函数&#xff1a;function(){} 属于函数表达式 匿名函数的作用&#xff1a;如果将匿名函数赋值给一个变量&#xff0c;则声明了一个函数&#xff1a; var bo…

bzoj3638

费用流线段树 看见这个题我们马上就能想到费用流&#xff0c;设立源汇&#xff0c;分别向每个点连接容量为1费用为0的边&#xff0c;然后相邻的点之间连边&#xff0c;费用为点权&#xff0c;跑费用流就行了&#xff0c;但是很明显这样会超时&#xff0c;那么我们要优化一下&am…

import python settings from_Python的Django框架中settings文件的部署建议

django在一个项目的目录结构划分方面缺乏必要的规范&#xff0c;因此不同人的项目组织形式也千奇百怪&#xff0c;而且也很难说谁的做法就比较好。我根据自己的项目组织习惯&#xff0c;发布了一个项目dj-scaffold。前些天在reddit上为我的项目dj-scaffold打了个“广告”(见&am…

android module 引用libs里面的so文件_Android中的JNI开发,你了解多少?

一&#xff0c;什么是任务及管理任务是用户在执行某项工作时与之互动的一系列 Activity 的集合。一、步骤&#xff0c;修改build.gradle&#xff0c;添加cmakelists&#xff0c;写JNI接口&#xff0c;写c&#xff0c;这个是不是流水线的方式集成&#xff0c;不了解每一步是做什…

一个带关闭按钮的Div窗口,很漂亮

<html><head><title>JSCSS实现带关闭按钮的DIV弹出窗口</title><script> function locking(){ document.all.ly.style.display"block"; document.all.ly.style.widthdocument.body.clientWidth; document.all.ly.style.heightdocu…

windows进入mysql改user_windows下如何修改mysql数据库密码

先要声明一点&#xff0c;大部分情况下&#xff0c;修改MySQL是需要有mysql里的root权限的&#xff0c;所以一般用户无法更改密码&#xff0c;除非请求管理员。方法一使用phpmyadmin&#xff0c;这是最简单的了&#xff0c;修改mysql库的user表&#xff0c;不过别忘了使用PASSW…

LeetCode 406. Queue Reconstruction by Height

原题链接在这里&#xff1a;https://leetcode.com/problems/queue-reconstruction-by-height/description/ 题目&#xff1a; Suppose you have a random list of people standing in a queue. Each person is described by a pair of integers (h, k), where h is the height …