农商行Socket请求xml拼接和返回xml解析
diff --git a/src/main/java/com/supwisdom/dlpay/api/bean/DlpayReq.java b/src/main/java/com/supwisdom/dlpay/api/bean/DlpayReq.java
new file mode 100644
index 0000000..3678cc0
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/api/bean/DlpayReq.java
@@ -0,0 +1,48 @@
+package com.supwisdom.dlpay.api.bean;
+
+public class DlpayReq {
+  private static final String prefix = "<?xml version=\"1.0\" encoding=\"GBK\"?>";
+
+  //HEAD
+  private String jkdm; //<JKDM>接口代码</JKDM>
+  private String jgdm; //<JGDM>结果代码</JGDM>
+  private String fsdw; //<FSDW>发送单位</FSDW>
+  private String jsdw; //<JSDW>接收单位</JSDW>
+  private String czyh; //<CZYH>操作员号</CZYH>
+  private String jyxh; //<JYXH>交易序号</JYXH>
+  private String jyqd; //<JYQD>交易渠道</JYQD>
+  private String yhxx; //<YHXX>安全用户信息</YHXX>
+  private String klxx; //<KLXX>安全口令信息</KLXX>
+
+  //DATA业务参数  <KEY>key值</KEY>
+
+
+  private String getPayXml() {
+    StringBuffer xml = new StringBuffer();
+    xml.append(prefix)
+        .append("<FORMDATA>")
+        //HEAD
+        .append("<HEAD>")
+        .append("<JKDM>").append(jkdm).append("</JKDM>")
+        .append("<JGDM>").append("000000").append("</JGDM>") //发送时填充000000
+        .append("<FSDW>").append(fsdw).append("</FSDW>")
+        .append("<JSDW>").append(jsdw).append("</JSDW>")
+        .append("<CZYH>").append(czyh).append("</CZYH>")
+        .append("<JYXH>").append(jyxh).append("</JYXH>")
+        .append("<JYQD>").append(jyqd).append("</JYQD>")
+        .append("<YHXX>").append(yhxx).append("</YHXX>")
+        .append("<KLXX>").append(klxx).append("</KLXX>")
+        .append("</HEAD>")
+        //DATA
+        .append("<DATA>")
+//        .append("<REFNO>").append("201906211124000011").append("</REFNO>")
+        .append("</DATA>")
+        .append("</FORMDATA>");
+    return String.format("%08d", xml.toString().length()) + xml.toString();
+  }
+
+
+
+
+
+}
diff --git a/src/main/java/com/supwisdom/dlpay/util/DlpayUtil.java b/src/main/java/com/supwisdom/dlpay/util/DlpayUtil.java
new file mode 100644
index 0000000..d4521d5
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/util/DlpayUtil.java
@@ -0,0 +1,76 @@
+package com.supwisdom.dlpay.util;
+
+import org.dom4j.Document;
+import org.dom4j.Element;
+import org.dom4j.io.SAXReader;
+
+import java.io.*;
+import java.net.Socket;
+import java.net.UnknownHostException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class DlpayUtil {
+  /**
+   * socket方式请求农商行
+   */
+  public static String send(String ip, int port, int timeout, String data) throws UnknownHostException, IOException {
+    Socket client = new Socket(ip, port);
+    client.setSoTimeout(timeout * 1000); //timeout秒
+    PrintWriter printWriter = new PrintWriter(client.getOutputStream());
+    // 发送消息
+    printWriter.println(data);
+    printWriter.flush();
+
+    // 读取返回信息
+    InputStreamReader streamReader = new InputStreamReader(client.getInputStream());
+    BufferedReader reader = new BufferedReader(streamReader);
+    StringBuffer content = new StringBuffer(); //存返回信息
+    int ch;
+    while ((ch = reader.read()) != -1) {
+      content.append((char) ch);
+    }
+    reader.close();
+    client.close();
+    return content.toString();
+  }
+
+  /**
+   * XML解析返回Map
+   * */
+  public static Map<String, Object> getXMLValue(String xml, String charset) {
+    if (null == xml) return null;
+    if (null == charset) charset = "UTF-8"; //默认 UTF-8
+    try {
+      byte[] data = xml.getBytes(charset);
+      ByteArrayInputStream bin = new ByteArrayInputStream(data);
+      SAXReader reader = new SAXReader();
+      Document document = reader.read(bin);
+      Element root = document.getRootElement();
+      List<Element> elementList = root.elements();
+      Map<String, Object> map = new HashMap<>(0);
+      for (Element e : elementList) {
+        map.put(e.getName(), getElementValue(e));
+      }
+      return map;
+    } catch (Exception e) {
+      e.printStackTrace();
+      return null;
+    }
+  }
+
+  private static Object getElementValue(Element root) {
+    if (null == root) return null;
+    if (root.elements().size() > 0) {
+      List<Element> elementList = root.elements();
+      Map<String, Object> map = new HashMap<>(0);
+      for (Element e : elementList) {
+        map.put(e.getName(), getElementValue(e));
+      }
+      return map;
+    } else {
+      return root.getText();
+    }
+  }
+}