问题描述:

  金融行业在系统模块分为财务和业务两个系统,我公司是负责业务模块系统,NC公司负责财务系统。但是财务有时候需要生成凭证,这时候就涉及业务模块了,我方就需要写NC凭证接口。这时候就需要三方交互好,确定规则。简单的说,就是我方发送一个正确的一个XML格式的字符给NC公司,然后NC公司会判断这个XML是不是符合规则,返回一个xml格式结果。好了,不多说,其实就是写一个Java代码,发送xml格式流和获取返回的xml格式的结果处理。

     public String checkNCSendPzFlag(String sendXML) throws Exception {
String result = "";//returne标识
try {
/*********将xml发送到目标服务器*****************/
//将xml保存在本地文件夹
String path = "F:\\xml_voucher\\IMP\\NC.xml";
File file = new File("F:\\xml_voucher\\IMP");
file.mkdirs();//创建父文件夹
File f2 = new File(path);
f2.createNewFile();
FileOutputStream fos = new FileOutputStream(f2);
fos.write(sendXML.getBytes("utf-8"));//写入并设置编码格式
fos.flush();
fos.close(); //获取Servlet连接并设置请求的方法
String url = "http://10.68.3.5:8020/service/XChangeServlet?account=04&groupcode=1";//NC接口地址
URL realURL = new URL(url);
HttpURLConnection connection = (HttpURLConnection) realURL
.openConnection();
connection.setDoOutput(true);
connection.setRequestProperty("Content-type", "text/xml");
connection.setRequestMethod("POST"); //将Document对象写入连接的输出流中
BufferedOutputStream out = new BufferedOutputStream(connection
.getOutputStream());
BufferedInputStream input = new BufferedInputStream(
new FileInputStream(path));
int length;
byte[] buffer = new byte[1000];
while ((length = input.read(buffer, 0, 1000)) != -1) {
out.write(buffer, 0, length);
}
input.close();
out.close(); /***************从连接的输入流中取得回执信息***************/
//输入流获取返回的xml,写入Document
InputStream inputStream = connection.getInputStream();
InputStreamReader isr = new InputStreamReader(inputStream, "utf-8");
BufferedReader bufreader = new BufferedReader(isr);
String xmlString = "";
int c;
while ((c = bufreader.read()) != -1) {
System.out.print((char) c);
xmlString += (char) c;
}
input.close();
Document resDoc = DocumentHelper.parseText(xmlString); /************对回执结果的后续处理…************/
//document转化为xml,并保存
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
DocumentSource source = new DocumentSource(resDoc);
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
//设置文档的换行与缩进
transformer.setOutputProperty(OutputKeys.INDENT, "YES");
//设置日期格式
SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMddHHmmss");
String resFile = "E:\\用友\\回执目录\\BkMsg_会计凭证_"
+ fmt.format(new Date()) + ".xml";
File resDis = new File("E:\\用友\\回执目录\\");
if (!resDis.exists())
resDis.mkdirs();
StreamResult results = new StreamResult(new File(resFile));
transformer.transform(source, results); //jdom解析XML
SAXBuilder builder = new SAXBuilder();
org.jdom.Document doc = builder.build(new File(resFile));
Element foo = doc.getRootElement();
List allChildren = foo.getChildren();
for (int i = 0; i < allChildren.size(); i++) {
System.out.println(" 发送状态:"
+ ((Element) allChildren.get(i)).getChild("resultcode").getText());
System.out.print("测试信息"
+ ((Element) allChildren.get(i)).getChild("resultdescription").getText());
} if (((Element) allChildren.get(0)).getChild("resultcode").getText()
.equals("1")) {
result = "导入成功!";
} else {
result = "导入失败:"
+ ((Element) allChildren.get(0)).getChild(
"resultdescription").getText();
}
} catch (Exception e) {
// TODO: handle exception
result = "导入失败" + e.getMessage();
e.printStackTrace();
}
return result;
}

NC凭证接口(Java发送流和处理返回结果)的更多相关文章

  1. Java IO流详解(一)——简单介绍

    文件在程序中是以流的形式来传输的.所以用Java来传输文件就得使用到Java IO流. 1.流的概念和作用 流:代表任何有能力产出数据的数据源对象或者是有能力接受数据的接收端对象<Thinkin ...

  2. Java发送http get/post请求,调用接口/方法

    由于项目中要用,所以找了一些资料,整理下来. GitHub地址: https://github.com/iamyong    转自:http://blog.csdn.net/capmiachael/a ...

  3. JAVA发送http get/post请求,调用http接口、方法

    import java.io.BufferedReader; import java.io.IOException;import java.io.InputStream; import java.io ...

  4. java发送短信开发,第三方接口方法

    必备的三个jar包Maven有自己去下: commons-logging commons-logging 1.1 commons-httpclient commons-httpclient 3.1 c ...

  5. Java发送企业微信应用消息

    1.发送消息与被动回复消息 (1)流程不同:发送消息是第三方服务器主动通知微信服务器向用户发消息.而被动回复消息是 用户发送消息之后,微信服务器将消息传递给 第三方服务器,第三方服务器接收到消息后,再 ...

  6. java IO流详解

    流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  7. Java IO流详尽解析

    流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  8. 【Java基础】Java IO流的总结

    Java IO流分为输入流和输出流,而输入流和输出流中又分字符流和字节流.顾名思义,输入流则是输入到程序中计算,输出流是把程序的结果输出到文件或者设备.而字符流输入输出以字符为单位,字节流则是以字节为 ...

  9. 微信支付之01------获取订单微信支付二维码的接口------Java实现

    [ 前言:以前写过一个获取微信二维码支付的接口,发现最近公司新开的项目会经常用到,现在我又翻出代码看了一遍,觉得还是把整个代码流程记下来的好 ] 借鉴博客: 他这篇博客写得不错,挺全的:https:/ ...

随机推荐

  1. xcache的使用与配置

    一.安装Xcache # wget http://xcache.lighttpd.net/pub/Releases/1.3.0/xcache-1.3.0.tar.gz # tar zxvf xcach ...

  2. CentOS中的环境变量配置文件

    CentOS的环境变量配置文件体系是一个层级体系,这与其他多用户应用系统配置文件是类似的,有全局的,有用户的,有shell的,另外不同层级有时类似继承关系.下面以PATH变量为例. 1.修改/etc/ ...

  3. APUE学习之多线程编程(二):线程同步

         为了保证临界资源的安全性和可靠性,线程不得不使用锁,同一时间只允许一个或几个线程访问变量.常用的锁有互斥量,读写锁,条件变量           一.互斥量      互斥量是用pthrea ...

  4. 【Linux】重定向与管道

    重定向 redirection 每个命令有输入源和输出目的地,默认行为,是标准输入和标准输出.大多数情况,标准输入是键盘,标准输出是屏幕.可以为单独的操作修改输入和输出,这就是重定向.重定向可以使某个 ...

  5. 教程三:Wechat库的使用

    上一篇教程中我们提供了wechat的php的库,这里我们简要介绍一个这个库的源码和使用.这个库的主文件为`Wechat.php`,其余的几个文件都是为这个文件服务的,提供加解密,消息拼接等功能.`We ...

  6. 项目自动化建构工具gradle 入门0——环境 & 废话

    gradle 是一个项目自动化构建工具.同类的产品还有ant ,maven等等.相比之下我更喜欢gradle,它语法简洁.兼容maven.ide集成很好. 学习使用gradle最快的方式是看文档,而且 ...

  7. Centos7 升级内核和应用TCP BBR 算法

    首先确认目前使用内核 uname -r rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.e ...

  8. C#剪切,复制,粘贴底层应用编写

    zz备用复制剪切粘贴的底层应用 /// <summary> /// 复制或剪切文件至剪贴板(方法) /// </summary> /// <param name=&quo ...

  9. play with usb

    1) struct usbdevfs_bulktransfer {        unsigned int ep;        unsigned int len;        unsigned i ...

  10. 1366分辨率其实是1368分辨率,firefox a标签点击有虚线

    1,通过intel 集成显卡的软件自定义一个1366分辨率,发现是1368的分辨率,@media screen and (max-deivce-width:1368px)才有效果,并且在同事电脑默认分 ...