java 浏览器发送传真_java---------发送网络传真
推荐公众号
==有彩蛋哦!!!==(或者公众号内点击网赚获取彩蛋)
程序员探索之路
服务商
在网上兜兜转转没有找到免费的网络传真API,只好付费服务商bnetfax
代码
有了API后那其他的就是按照文档开发了没什么难度
发送代码
public static void main(String[] args) throws IOException, ServiceException {
收件人号码
String destnumbers = "********";
发送主题
String title = "代码测试发送传真";
FaxConfig faxConfig = FaxConfig.builder()
企业账号
.bnetaccount("********")
密码
.password("********")
发送者号码
.sendnumber("********")
用户账号
.useraccount("********")
区号
.areaid("********")
.build();
List paths = Lists.newArrayList("test.pdf");
FaxResultDTO faxResultDTO = sendFax(faxConfig, title, destnumbers, paths);
log.info("faxResultDTO=[{}]", faxResultDTO);
}
public static FaxResultDTO sendFax(FaxConfig faxConfig, String title, String destnumbers, List filePath) throws IOException, ServiceException {
Map fileBuffer = getFileBuffer(filePath);
//生成访问Soap传真服务接口的UserTest实例
SoapFaxClient soapFaxClient = new SoapFaxClient();
//通过UserTest.upload()把字节大小和文件名传过去以访问Soap传真服务接口
String xml = soapFaxClient.doSendFax(fileBuffer,
faxConfig.getSendnumber(), title, faxConfig.getUseraccount(), faxConfig.getBnetaccount(),
faxConfig.getPassword(), destnumbers, faxConfig.getAreaid());
//将发送与返回的xml包分开
String[] xmls = xml.split("@@");
// System.out.println("保存服务端返回的xml到request域中" + xmls[0]);
// System.out.println("保存客户端发送的xml到request域中" + xmls[1]);
//xml包解析
FaxResultDTO faxResultDTO = parseFaxResultXml(xmls[0]);
String resultCode = faxResultDTO.getResultCode();
String faxid = faxResultDTO.getFaxid();
String resultdesc = faxResultDTO.getResultdesc();
if (resultCode != null && (!"".equals(resultCode)) && (resultCode.equals("1000"))) {
log.info("faxid=[{}], success", faxid);
} else {
log.info("resultCode:[{}],resultdesc=[{}]", resultCode, resultdesc);
}
faxResultDTO.setRequestXml(xmls[1]);
faxResultDTO.setResponseXml(xmls[0]);
return faxResultDTO;
}
private static FaxResultDTO parseFaxResultXml(String xml) {
ServletClass xmlParser = new ServletClass();
String resultCode = null;
String faxid = null;
String hashcode = null;
String timestamp = null;
String resultdesc = null;
FaxResultDTO faxResultDTO = null;
try {
xmlParser.loadXml(xml);
resultCode = xmlParser.getSingleNodeValue("resultcode");
faxid = xmlParser.getSingleNodeValue("faxid");
hashcode = xmlParser.getSingleNodeValue("hashcode");
timestamp = xmlParser.getSingleNodeValue("timestamp");
resultdesc = xmlParser.getSingleNodeValue("resultdesc");
faxResultDTO = new FaxResultDTO(resultCode, faxid, hashcode, timestamp, resultdesc);
} catch (Exception e) {
log.error("解析fax-result-xml失败", e);
e.printStackTrace();
}
return faxResultDTO;
}
/**
* 返回 key=文件名 value=文件byte数组
* @param path
* @return
* @throws IOException
*/
private static Map getFileBuffer(List path) throws IOException {
Map map = Maps.newHashMap();
path.forEach(p -> {
File file1 = new File(p);
FileInputStream fileInputStream = null;
try {
fileInputStream = new FileInputStream(file1);
String filename = file1.getName();
//获取文件大小
int filelength = Integer.valueOf(String.valueOf(file1.length()));
//字节大小
byte[] buffer = new byte[filelength];
InputStream streamIn1 = fileInputStream;
streamIn1.read(buffer);
streamIn1.close();
map.put(filename, buffer);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
});
return map;
}
客户端请求发送传真件接口
public String doSendFax(Map fileBuffer,
String sendnumber, String title, String useraccount, String bnetaccount, String password,
String destnumbers, String areaid) throws ServiceException, RemoteException {
设置请求访问Soap网络传真接口的url
String endPoint = "*****************";
String xml = null;
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(endPoint);
设置请求访问的url及接口名称
call.setOperationName(new QName(endPoint, "SendFax"));
获取附件
Map fileNamesAndObjects = getFileNamesAndObjects(fileBuffer);
String[] filename = (String[]) fileNamesAndObjects.get("name");
Object[] objects = (Object[]) fileNamesAndObjects.get("object");
MD5 md5 = new MD5();
MD5加密password
password = MDES.encrypt(password);
final String KEY = "*******";
获取系统时间戳
long timestamp = System.currentTimeMillis();
生成哈希码 Md5(useraccount + timestamp + KEY)
StringBuilder inbuf = new StringBuilder(useraccount)
.append(bnetaccount)
.append(timestamp)
.append(KEY);
String hashcode = md5.getMD5ofStr(inbuf.toString());
StringBuffer xmlstring = new StringBuffer(
"<?xml version=\"1.0\" encoding=\"GB2312\" ?>")
.append("\n")
.append("\n" + useraccount + "")
.append("\n" + bnetaccount + "")
.append("\n" + areaid + "")
.append("\n" + password + "")
.append("\n" + destnumbers + "")
.append("\n" + sendnumber + "")
.append("\n
" + title + "")
// xmlstring.append("\n" + piclevel + "");
.append("\n" + timestamp + "")
.append("\n" + hashcode + "")
.append("\n" + filename[0] + "," + filename[1] + ","
+ filename[2] + "," + filename[3] + "," + filename[4] + "," + filename[5]
+ "," + filename[6] + "," + filename[7] + "," + filename[8] + ","
+ filename[9] + "")
.append("\n" + 1 + "")
.append("\n");
log.info("FAX-发送xmL:[{}]", xmlstring.toString());
客户端调用Soap传真服务发送传真件接口
objects[0] = xmlstring.toString();
xml = (String) call.invoke(objects);
xml += "@@" + xmlstring.toString();
return xml;
}
private static Map getFileNamesAndObjects(Map fileBuffer) {
Map map = new HashMap<>();
String[] filename = new String[]{"", "", "", "", "", "", "", "", "", ""};
Object[] objects = new Object[]{"", new byte[0], new byte[0], new byte[0], new byte[0], new byte[0], new byte[0], new byte[0], new byte[0], new byte[0], new byte[0]};
int i = 0;
for (Map.Entry entry : fileBuffer.entrySet()) {
String key = entry.getKey();
byte[] value = entry.getValue();
filename[i] = key;
objects[i + 1] = value;
++i;
}
map.put("name", filename);
map.put("object", objects);
return map;
}
返回成功报文
***********
1000
传输正常
************
**********
回执接口
客户端请求查询传真回执接口
public String queryFaxResult(String faxId) {
设置请求访问Soap网络传真接口的url
String endPoint = "*************";
Call call = null;
String xml = null;
try {
Service service = new Service();
call = (Call) service.createCall();
call.setTargetEndpointAddress(endPoint);
设置请求访问的url及接口名称
call.setOperationName(new QName(endPoint, "queryFaxResult"));
MD5 md5 = new MD5();
final String KEY = "**********";
获取系统时间戳
long timestamp = System.currentTimeMillis();
生成哈希码 Md5(faxid + timestamp + KEY)
String hashcode = md5.getMD5ofStr(faxId + timestamp + KEY);
StringBuffer xmlstring = new StringBuffer(
"<?xml version=\"1.0\" encoding=\"GB2312\" ?>");
xmlstring.append("\n");
xmlstring.append("\n" + faxId + "");
xmlstring.append("\n" + timestamp + "");
xmlstring.append("\n" + hashcode + "");
xmlstring.append("\n");
//System.out.println("\n发送的XML:\n"+xmlstring.toString());
//客户端调用Soap传真服务查询传真回执接口
xml = (String) call.invoke(new Object[]{xmlstring.toString()});
//为了同时返回发送和返回的xml包,将两个包用“@@”连接
xml += "@@" + xmlstring.toString();
} catch (Exception ex) {
ex.printStackTrace();
System.out.println("打印错误:\n" + ex.toString());
}
return xml;
}
回执接口返回报文
N
1000
结果:总共需发送号码1个,已发送0个,未发送1个
**************
*************
@@<?xml version="1.0" encoding="GB2312" ?>
********************
*********
*************
java 浏览器发送传真_java---------发送网络传真相关推荐
- Java短信频率_java发送短信系列之限制发送频率
本篇是发送短信的第二部分, 这里我们介绍一下如何限制向同一个用户(根据手机号和ip)发送短信的频率. 1.使用session 如果是web程序, 那么在session中记录上次发送的时间也可以, 但是 ...
- java 限制发送频率_java发送短信如何限制发送频率例子代码
本篇文章主要是详细介绍了java发送短信系列之怎么限制发送频率示例解析,在此为大家介绍一下怎么样限制向同一个用户(根据手机号和ip)发送短信的频率. 1.使用session 要是web程序那在sess ...
- java exchange发邮件_java发送exchange邮件问题
/** * 发送邀请 * @param cycleModel*/ protected voidsendEmail(CycleMailModel cycleModel) { Properties pro ...
- java httpget 传参数_Java 发送http请求(get、post)
1.情景展示 java发送get请求.post请求(form表单.json数据)至另一服务器: 可设置HTTP请求头部信息,可以接收服务器返回cookie信息,可以上传文件等: 2.代码实现 所需ja ...
- java 限制发送频率_java发送短信系列之限制日发送次数
在前两篇文章中, 我们实现了同步/异步发送短信以及限制发送短信频率.这一篇, 我们介绍一下限制每日向同一个用户(根据手机号和ip判断)发送短信的次数 1.数据表结构 由于需要记录整天的发送记录, 因此 ...
- java 手机短信_JAVA发送手机短信
JAVA发送手机短信,流传有几种方法:(1)使用webservice接口发送手机短信,这个可以使用sina提供的webservice进行发送,但是需要进行注册;(2)使用短信mao的方式进行短信的发送 ...
- java发送请求_Java发送Http请求
直接导入第三方jar commons-httpclient commons-httpclient 3.1 工具类代码 import org.apache.commons.httpclient.Http ...
- java http 返回值_java发送http请求,无需等待返回结果
浮云间 HttpURLConnection有个setReadTimeout的方法可以实现你的需求.publicstaticStringdoGet(StringHTTP_URL,Objectobject ...
- java 短信软件_Java 发送短信工具类
标签: /** * SMS短信组件 * @author Administrator * */ public class SMSSender { protected Logger logger=Logg ...
最新文章
- java jmx连接不上_JMX连接服务端失败
- from import python3_《Python语言程序设计》 —3.3.2 from import
- 突然发现我还有博客园的博客呢哈哈哈哈
- 谈谈分布式的场景及分布式事务的解决方案
- 嵌入式产品开发设计需要考虑的问题总结
- SAP Spartacus的OccCmsPageNormalizer
- error c4996: 'fopen' This function or variable may be unsafe如何解决
- java自定义错误码类_如何编写和应用Java的自定义异常类
- Memcached学习一:Memcached安装使用
- ehcache缓存的详细配置
- 你如何在PowerShell中注释掉代码?
- 3. 线性表的链式结构
- unity序列帧动画的粒子特效
- 【单片机】2.9 看门狗定时器(WDT)功能简介
- ubuntu使用cmake编译coffe
- 电子护照阅读器现身出入境办证大厅
- 响铃:揭底滴滴们跨界营销“真相”,再教你玩一出好戏
- 终于可以舒服的看电子书了
- JetBrains PyCharm JetBrains PyCharm 2018.1.3 x64永久破解
- python 操作excel2007
热门文章
- 2017华为软件精英挑战赛系列一
- CQF笔记M1L3泰勒级数和转移概率密度函数
- 【AdvancedLocomotionSystemV】第七篇 C++ 实现角色蹲伏和跑步细节
- 资源中心:一. 漫画系列
- Android Paging3的使用
- 华硕飞行堡垒6打开tpm
- 接收后台数据并向后台发送数据
- MxCAD5.2 2017.2.23更新
- nfs:server is not responding, still trying(NFS,不能从服务器读取,mount的问题)
- 编写一个判断素数的函数,在主函数输入一个整数时,输出是否素数的信息。