银行接口Socket传输XML实列

本文介绍了如何在项目中处理银行提供的仅支持Socket接口且使用XML格式传输的情况。通过本地构建server端和client端进行联调,详细讲解了请求和响应报文的构建,并列举了所需的jar包及启动流程。
摘要由CSDN通过智能技术生成

银行接口Socket传输XML

因为项目需要,行方不提供http接口,只提供socket接口,并且用XML格式传输(并且没有联调,所以本地创建server端和client端进行本地调试)。

请求报文:

    <?xml version="1.0" encoding="UTF-8"?>
    <packet>
        <SYS_ID>ZFB2C</SYS_ID>
        <TRANS_CODE>TOKEN</ TRANS_CODE>
    </packet>

响应报文:

    <?xml version="1.0" encoding="UTF-8"?>
    <packet>
        <SYS_ID>ZFB2C</SYS_ID>
        <TRANS_CODE>TOKEN</ TRANS_CODE>
        < ACCESS_TOKEN >skdlajtfoiewjflkdsajflkdsajlkfdsajfljdsalkf</ ACCESS_TOKEN >
        <RET_CODE>0000</ RET_CODE>
        <RET_RMK>token值</RET_RMK>
    </packet>

server端:

package com.demo.socket7;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

/**
* Socket通信XML
* @author earthxuan
*
*/
public class SocketServerTest {
    public static void main(String[] args) throws IOException, ParserConfigurationException, TransformerException {
    System.out.println("server.......");
    ServerSocket serverSocket=null;
    Socket sk=null;
 serverSocket=new ServerSocket(9999);
    while (true){
	    //阻塞获取请求
        sk=serverSocket.accept();
        InputStream inputStream=sk.getInputStream();
        //读客户端传来的数据
        DataInputStream in = new DataInputStream(inputStream);
        String data = in.readUTF();
//		System.out.println("接收到的数据:" + data);
        //对客户端信息的校验,或者做其他的过滤
        if(data.length()<5){
    	//数据长度小于5,则不需要解析客户端的数据,直接回传报文,RET_CODE为1111
        OutputStream outputStream=sk.getOutputStream();
        DataOutputStream dataOutputStream=new DataOutputStream(outputStream);

        DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
        DocumentBuilder documentBu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值