接口开发,带string和struct参数方法编写,图片base64Binary编码编写(c#开发)

turefei 2013-05-27 11:12:41
接口名称:
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>
<XJIP>相机IP</XJIP>
<XJDKH>相机端口号</XJDKH>
<JGSK>经过时刻</JGSK>
<CDBH>车道编号</CDBH>
<HPHM>号牌号码</HPHM>
<HPYS>号牌颜色</HPYS>
<HPZL>号牌种类</HPZL>
<CLSD>车辆速度</CLSD>
<CWKC>车外廓长</CWKC>
<CSYS>车身颜色</CSYS>
<CLLX>车辆类型</CLLX>
<CLPP>车辆品牌</CLPP>
<SSYF>实时与否</SSYF>
</ROOT>
PlatePicData:车牌特征小图片信息,最大20K,可以为空,图片以JPEG格式压缩。
CarPic1:车辆图片1,最大1.5M,不能为空。
CarPic2:车辆图片2,最大1.5M,可以为空。
CarPic3:车辆图片3,最大1.5M,可以为空。
所有以上图片信息若超过规定大小请自行压缩。
车辆图片按照从左到右依次赋值,如果有一张图片,则赋值到CarPic1,有两张则依次赋值CarPic1,CarPic2,依此类推。

PlatePicData:只存车牌小图片。
struct xsd__base64Binary
{
unsigned char* __ptr;//图片数据缓冲区
int __size;//图片数据大小
};
Respond:返回值为xml字符串。格式如下:
<?xml version="1.0" encoding=" UTF-8 " standalone="yes" ?>
<ROOT>
<!—返回结果信息,0为调用成功,其它值为失败-->
<CODE>0</CODE>
<!—CODE为非0时,MESSAGE 字段为失败的原因,CODE为0时为空-->
<MESSAGE>失败时获取详细的失败信息</MESSAGE>
</ROOT>


我完成的部分代码:
public static bool UploaderInfoPic(PassingVehicle vehicle)
{
string plateNbr;
if (string.IsNullOrEmpty(vehicle.plateNbr))
{
plateNbr = "-";
}
else
{
plateNbr = vehicle.plateNbr;
}
string strVehicleInfo = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" +
"<ROOT>" +
"<KKMY>" + GetDeviceInfo(vehicle.deviceNo).Substring(12) + "</KKMY>" +
"<KKBH>" + GetDeviceInfo(vehicle.deviceNo).Substring(0, 12) + "</KKBH>" +
"<JGSK>" + Convert.ToDateTime(vehicle.captureTime).ToString

("yyyyMMddhhmmssfff") + "</JGSK>" +
"<CDBH>0" + vehicle.lane + "</CDBH>" +
"<HPHM>" + plateNbr + "</HPHM>" +
"<HPYS>" + vehicle.plateColor + "</HPYS>" +
"<HPZL>" + vehicle.plateType + "</HPZL>" +
"<CLSD>" + vehicle.vehicleSpeed + "</CLSD>" +
"<CWKC></CWKC>" +
"<CSYS>Z</CSYS>" +
"<CLLX></CLLX>" +
"<SSYF>0</SSYF>" +
"</ROOT>";

return true;
}
public static string GetDeviceInfo(string DeviceNbr)
{
DataTable dt = CSVProvider.ToDataTable2(DeviceKeyPath,true);
Dictionary<string, string> DicKey = new Dictionary<string, string>();
for (int i = 0; i < dt.Rows.Count;i++ )
{
DicKey.Add(dt.Rows[i][0].ToString(), dt.Rows[i][1].ToString()+dt.Rows[i][2].ToString());
}
return DicKey[DeviceNbr];
}
接下来不知道怎么写了?谁帮忙一下。。。。
...全文
659 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
crystal_lz 2015-10-12
  • 打赏
  • 举报
回复

[DllImport("你的dll")]
public static extern string SendVehiclePass(string strVehiclePassInfo,XSD_BASE64BINARY platePicData,XSD_BASE64BINARY CarPic1,XSD_BASE64BINARY carPic2,XSD_BASE64BINARY CarPic3)
public struct XSD_BASE64BINARY{
public byte[] Ptr;
public int Size;
}

然后调用就是了
hthhth3 2015-10-12
  • 打赏
  • 举报
回复
都是智能交通行业的码农
缘来有你123 2014-04-07
  • 打赏
  • 举报
回复
上楼的人,看到信息回复哦,我急用!你那结构体和图片参数问题怎么解决的。我现在是C#调用别人开发的JAVA程序开发的接口,但是我的参数怎么也传不过去
缘来有你123 2014-04-07
  • 打赏
  • 举报
回复
哥们你的问题解决了么,我的也是这个问题,你那个传参数怎么传的呀?
turefei 2013-05-27
  • 打赏
  • 举报
回复
在写等待回复结贴。谢谢!!!
turefei 2013-05-27
  • 打赏
  • 举报
回复
Fields字段列表:
turefei 2013-05-27
  • 打赏
  • 举报
回复
没有人回复么?

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧