使用java发送Infor XA ERP SystemLink请求

      Infor XA ERP二次开发,目前最好的最方便的交互就是通过发送SystemLink请求

      这里记录个人在实际工作中java编写的发送SystemLink请求工具

package cn.markwins.yinfor.utils.net;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.log4j.Logger;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.BufferedHttpEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;

import cn.markwins.yinfor.global.GlobalParameters;
import cn.markwins.yinfor.utils.common.StringTools;


/**
 * @Description Http网络请求工具栏
 * @author 李yi辉
 * @date 2016年3月23日
 */
public class HttpTools {
	private static final String encodingUTF8 ="UTF-8"; 
	private static final Logger logger = Logger.getLogger(HttpTools.class);
	
	/**
	 * @Description 发送Http请求
	 * @param url 请求地址
	 * @param xml xml请求内容
	 * @return String 请求后的响应消息
	 */
	public static Map<Boolean,String> postXMLRequest(String url, String xml){
		if(StringTools.isNullOrWhiteSpace(xml) || StringTools.isNullOrWhiteSpace(xml)){
			return null;
		}
		HttpURLConnection httpConn = null;
		OutputStream os = null;
		InputStream is = null;
		StringBuffer responseBuffer = null;
		Boolean postStatus = false;
		String postMsg = ":发送SystemLink请求失败";
		try {
			//1、得到http连接
			httpConn = (HttpURLConnection) new URL(url).openConnection();
			
			//2、设置http请求参数
			httpConn.setRequestMethod("POST");
	        httpConn.setDoInput(true);
	        httpConn.setDoOutput(true);
	        httpConn.setUseCaches(false);
	        httpConn.setConnectTimeout(50000);
	        httpConn.setReadTimeout(50000);
	        httpConn.setRequestProperty("Content-Type", "text/xml; charset=UTF-8");
	        
	        //3、通过http连接服务器
	        httpConn.connect();
	        
	        //4、向服务器发送xml数据
	        os = httpConn.getOutputStream();
	        os.write(xml.getBytes());
	        os.flush();
	        
	        //5、得到http请求后,服务器返回的响应
	        int responseCode = httpConn.getResponseCode();
	        switch (responseCode) {
			case 200:
				is = httpConn.getInputStream();
	        	int length = 0;
	            byte[] buffer = new byte[1024];
	            responseBuffer = new StringBuffer();
	            while((length=is.read(buffer)) != -1){
	            	responseBuffer.append(new String(buffer,0,length,GlobalParameters.ENCODING));
	            }
	            if(responseBuffer.length() > 10){
	            	postStatus = true;

	            	postMsg = URLDecoder.decode(responseBuffer.toString().trim(), "UTF-8");
	            	
	            }else{
	            	postMsg = "200:" + responseBuffer.toString();
	            }
				break;
			case 400:
				postMsg = "400:错误请求";
				break;
			case 404:
				postMsg = "404:未找到";
				break;
			case 408:
				postMsg = "408:请求超时";
				break;
			case 500:
				postMsg = "500:SystemLink XA服务器错误";
				break;
			default:
				postMsg = responseCode + postMsg;
				break;
			}
	        
	        //6、返回响应消息
			Map<Boolean, String> resultMap = new HashMap<Boolean, String>();
			resultMap.put(postStatus, postMsg);
			return resultMap;
		} catch (Exception e) {
			logger.error("发送Http请求失败", e);
		} finally {
			try {
				if(is != null){
					is.close();
					is = null;
				}
				if(os != null){
					os.close();
					os = null;
				}
				if(httpConn != null){
					httpConn.disconnect();
					httpConn = null;
				}
			} catch (IOException e) {
				logger.error("关闭Http请求连接资源失败", e);
			}
		}
		
		return null;
	}
}

我们将SystemLink请求的响应结果放在了一个map里面,通过map的key值ture/false就可以知道请求是否发送成功,

如果成功了,就可以解析出SystemLink的响应报文,我们在下一篇里面介绍如何解析SystemLink的报文信息。


http://blog.csdn.net/yihuiworld


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值