近期做了一个财务方面的系统(以下称“进销存”),里面有一个模块是销项发票,客户要求与金税开票系统(以下称”金税”)做接口。在网上找到了金税的接口文档。 看了接口文档后确定了使用ftp与金税交互的开发方案。
具体方案为:进销存将编辑好的发票信息按照要求生成xml文件上传至ftp服务器固定目录下,开票人员将ftp服务器固定目录下的xml导入至金税。金税设置将开票的返回结果生成.TXT文件放置到ftp服务器固定目录下。进销存开启一个定时器,读取金税的开票结果。
问题就出现在进销存读取金税的开票结果上。
进销存生成的发票信息为yyyymmddxxyyy.xml,即年月日流水号的xml,金税读取xml后返回的开票结果为yyyymmddxxyyy_开票结果.TXT。文件名称中有中文字符。
进销存读取开票结果的思路为,获取所有开票结果文件,并将文件名中的年月流水号取出来,作为修改进销存开票信息的依据。然后读取.TXT中的内容,获取开票信息,如是否开票成功,发票号,开票日期等。
/**
* 获取FTPClient对象
* @param ftpHost FTP主机服务器
* @param ftpPassword FTP 登录密码
* @param ftpUserName FTP登录用户名
* @param ftpPort FTP端口 默认为21
* @param charsetName
* @return
*/
public static FTPClient getFTPClient(String ftpHost, int ftpPort, String ftpUserNam