网站首页 > 博客文章 正文
最近在做自助机,有个需求就是刷过磅卡获取车辆的过磅信息,那么就需要设备厂家提供接口,厂家那边是基于.net平台,他们为了自己方便,就只能提供WebService接口,那就没办法了,只能委屈自己。
WebService是Http+Soap报文的方式来请求响应的,既然是HTTP,那就好办了。我们先用浏览器直接访问一下WebService的接口,查看一下接口的相关信息,这个接口是采用的HTTP Authorization Basic Auth方式来保证接口安全的。
输入对应的用户名和密码就可以成功的访问到接口了
这里,我们能看到对应的报文,那么我们就用postman来试试效果,我们先设置一下postman里面的Authorization
然后把报文复制到Body里面,然后直接点击Send,我以为会看到想要的结果,然而
其实这主要是Content-Type的原因,我们去把postman生成的Content-Type改为text/xml即可
此时,我们来仔细看看我们的Headers里面的信息
可以看到Authorization这个信息,它里面的值是我们在前面设置Basic Auth的时候自动生成的,它的生成规则是Basic base64encode(username+":"+password)。既然postman能够调通了,那么我们就可以用程序直接调用了。
这里我用的HuTool的HTTP请求库,
private String buildXmlParams(String idCard, String orgId) {
String xml = "\n" +
"<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">\n" +
" <s:Body>\n" +
" <fun_GetWeightBridge xmlns=\"http://tempuri.org/\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">\n" +
" <idcard>" + idCard + "</idcard>\n" +
" <org_id>" + orgId + "</org_id>\n" +
" </fun_GetWeightBridge>\n" +
" </s:Body>\n" +
"</s:Envelope>";
return xml;
}
String resultXml = HttpRequest.post("http://127.0.0.1/Web/db/Prod.asmx?op=fun_GetWeightBridge").body(buildXmlParams(idCard, orgId)).header("Content-Type", "text/xml;charset=utf-8").header("Authorization", "Basic dGVzdDp0ZXN0").execute().body();
使用HttpRequest发起请求,会收到返回的xml字符串,这里我们可以用HuTool提供的工具类来吧xml转为Map
Map<String, Object> result = new HashMap<>();
XmlUtil.xmlToMap(resultXml, result);
剩下的如何操作就随意了,当然了,百度肯定有更好的方式,只是我觉得这种方式我用起来更方便一些。最近的工作量尤其庞大,又要开始做自助机了,C端准备用WPF,没办法,只得现学现做,硬着头皮上啊。
猜你喜欢
- 2024-11-12 基于SpringBoot 的CMS系统,拿去开发企业官网真香(附源码)
- 2024-11-12 解决JAVA压缩图片变色问题(java压缩图片至指定大小)
- 2024-11-12 J2eeFAST 开源平台(j2ee开发工具)
- 2024-11-12 Java项目中用它来代替一半的反射使用,爽到飞起!
- 2024-11-12 反射用不好真的会影响代码执行效率!
- 2024-11-12 基于AbstractProcessor扩展MapStruct自动生成实体映射工具类
- 2024-11-12 Java面试问题(一)—— java 基础(java面试问题大全及答案大全)
- 2024-11-12 一个轻量级的Java快速开发平台快速开发项目并交付「接私活利器」
- 2024-11-12 电商系统中的 ID 是如何生成的?(电商注册账号是什么)
- 2024-11-12 用了这两款插件,同事再也不说我代码写的烂了
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)