接口名称:

std::string SendVehiclePass(std::string VehiclePassInfo, struct xsd__base64Binary
PlatePicData, struct xsd__base64Binary CarPic1, struct xsd__base64Binary CarPic2,
struct xsd__base64Binary CarPic3)

参数说明:

VehiclePassInfo:过车信息详情 xml,具体如下:

<?xml version="1.0" encoding=" UTF-8 " standalone="yes" ?>
<ROOT>
<KKMY>卡口密钥<KKMY>
<KKBH>卡口编号</KKBH>
<JGSK>经过时刻</JGSK>
<CDBH>车道编号</CDBH>
<HPHM>号牌号码</HPHM >
<HPYS>号牌颜色</HPYS >
<HPZL>号牌种类</HPZL>
<CLSD>车辆速度</CLSD>
<CWKC>车外廓长</CWKC>
<CSYS>车身颜色</CSYS>
<CLLX>车辆类型</CLLX>
<SSYF>实时与否</SSYF>
<CLZPP1>车辆主品牌</CLZPP2>
<CLZPP2>车辆子品牌</CLZPP2>
<CLNK>车辆年款</CLNK>
<ZJSAQDZT>主驾驶安全带状态</ZJSAQDZT>
<FJSAQDZT>副驾驶安全带状态</FJSAQDZT>
<ZJSZYBZT>主驾驶遮阳板状态</ZJSZYBZT>
<FJSZYBZT>副驾驶遮阳板状态</FJSZYBZT>
<SFDDH>是否打电话</SFDDH>
<SFHBC>是否黄标车</SFHBC>
<SFWXPC>是否危险品车</SFWXPC>
<SFYGJ>是否有挂件</SFYGJ>
<CDFX>车道方向</CDFX>
</ROOT>

PlatePicData:车牌特征小图片信息,最大 20K,可以为空。**

CarPic1:车辆图片1,最大 1.5M,不能为空。

CarPic2:车辆图片2,最大 1.5M,可以为空。

CarPic3:车辆图片3,最大 1.5M,可以为空。

所有以上图片信息若超过规定大小请自行压缩。

车辆图片按照从左到右依次赋值,如果有一张图片,则赋值到 CarPic1,有两张则依次赋值

CarPic1,CarPic2,依此类推。PlatePicData:只存车牌小图片。

struct xsd__base64Binary

{

unsigned char* __ptr;//图片数据缓冲区

int __size;//图片数据大小

};

我使用的Hutool,就可以在无任何依赖的情况下,实现简便的WebService请求,需要引入的pom文件:

            <dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-http</artifactId>
<version>5.4.3</version>
</dependency>

核心代码:

	    String c1 = ImageUtil.imageToBase64(CarPic1);
// 新建客户端
SoapClient client = SoapClient.create("接口url")//例如:http://127.0.0.1:8888
// 设置要请求的方法,传入对应的命名空间
.setMethod("SendVehiclePass", "http://tempuri.org/ns.xsd")
// 设置参数
.setParam("VehiclePassInfo", msg)
.setParam("PlatePicData", null)
.setParam("CarPic1", c1)
.setParam("CarPic2", null)
.setParam("CarPic3", null);
// 发送请求,参数true表示返回一个格式化后的XML内容
// 返回内容为XML字符串,可以配合XmlUtil解析这个响应
String result = client.send(true);
logger.info("返回的数据:{}",result);

根据图片的url地址转化为Base64编码的字符串:

/**
* 将图片编码为base64
* @param url 图片的url地址
* @return 返回Base64编码过的字节数组字符串
* @throws IOException
*/
public static String imageToBase64(String url) throws IOException {
URL urlContent = new URL(url);
HttpURLConnection con = (HttpURLConnection)urlContent.openConnection();
con.setRequestMethod("GET");
con.setConnectTimeout(5 * 1000);
InputStream inStream = con .getInputStream();//通过输入流获取图片数据
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] buffer = new byte[2048];
int len = 0;
while( (len=inStream.read(buffer)) != -1 ){
outStream.write(buffer, 0, len);
}
inStream.close();
byte[] data = outStream.toByteArray();
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(data);
}

亲测有效

最新文章

  1. 女生的最爱,装饰品。WPF也有,Adorner。(上海晒衣服理念)
  2. SQL Server 通过重建方式还原 master 数据库
  3. Windows Phone 十四、磁贴通知
  4. 在ubuntu 14.04 64位添加32位库
  5. tcp有限状态机
  6. javaweb学习总结(九)—— 通过Servlet生成验证码图片
  7. Android 学习笔记之如何实现简单相机功能
  8. DevExpress LookUpEdit和ComboBoxEdit部分用法
  9. 英特尔实感SDK 代码示例
  10. linux服务器上
  11. codeforces 610B
  12. C#整理2——C#的输入输出及基本类型
  13. ZOJ 1563 Pearls(动态规划)
  14. Lua 服务器与客户端实例(转)
  15. java第一阶段测试
  16. 【Java入门提高篇】Day16 Java异常处理(下)
  17. C++对象生存期&amp;&amp;static
  18. Python基础之 函数名,闭包,和迭代器
  19. PowerScript表达式
  20. class前置声明

热门文章

  1. git stash的常用操作
  2. B-Tree插入和删除的Java实现
  3. 简单测试 APISIX2.6 网关
  4. WordPress安装篇(4):YUM方式安装LNMP并部署WordPress
  5. Mac为docker和kubectl添加自动命令补全
  6. hackthebox TheNotebook
  7. 合肥某小公司面试题:Spring基础
  8. 『动善时』JMeter基础 — 50、使用JMeter测试WebService接口
  9. USB上位机通信:CyAPI
  10. 2018-10-14普及模拟赛」Hash 键值 (hash)