分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

MyIfmHttpClient

发布时间:2023-09-06 01:11责任编辑:林大明关键词:暂无标签
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"; ???????@Override ???public 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()); ???????} ???}}

MyIfmHttpClient

原文地址:http://www.cnblogs.com/tonggc1668/p/7525304.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved