项目开发中,我们总能遇到的那么些坑,不仅是代码上的,还有第三方接口的...
今天测试移动给的SIM卡接口,昨天就发现给的接口url有问题,说是用WebService,但我愣是没有看到asmx的url接口路径啊(我是用.net开发的),结果自己测试了一下,果然有问题,就开始联系移动的对接人,嗯,好吧,果然是接口文档没有给全。随后给了接口文档,但是!!!没有demo,好不容易有个代码了是为了演示数字签名如何生成的,算法是HmacSHA256,还特么是java写的的,而且还是直接调用包来处理的!!!特么坑死了,一开始自己上网找了C#的HmacSHA256实现,FCL里面有这个类库,但是没有一开始自己没有好好看生成数字签名的过程,导致随后的装逼失败。就找对接人要了一份C#的代码,更坑!!!他给我的C#代码是好几个类组合的,直接一股脑给我了,而且里面的函数都重定义了,一堆错,还好我C#基础可以,自己挨个分析,找错。最后解决了。不过因为两个小问题,卡了半天,其一就是json,我给移动的接口url post的参数是json格式的,我一开始觉得参数少,就没有在意,直接就是手动写了json,谁知道就出错在这里!拼接的json串中间有空格!导致,移动给我的response一直都是: 数字签名有问题,给我气的,我嫌用第三方json麻烦,还要自己弄个类,之后经理跟我说,匿名类啊,哎呀,对啊。忘了它,最后使用匿名类,传入第三方json解决问题。其二就是浏览器了,我一开始直接把移动给的url用浏览器方法,谁知道弹出下载框,注意我用的是QQ浏览器,同事也试了,他可以接到返回值,他用的是谷歌,后来我换了浏览器就可以啦,因此,在这里建议,开发的话,还是多用几个浏览器,最好谷歌。
剩下的就是数字签名了,但也没有什么,最终重要的就是: 密钥appKey每两位长度转为10进制,然后再转为字节数组,整个数组为加密密钥
其实,我看数字签名的生成过程是崩溃的,还好这步,对接人给我的C#代码里面有,我就直接用了。给个代码吧:
class DESEncrypt{public static int decode(String paramString, MemoryStream paramOutputStream){byte[] encodingTable = { 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99, 100, 101, 102 };//byte[] decodingTable = new byte['?'];byte[] decodingTable = new byte[256];for (int i = 0; i < encodingTable.Length; i++){decodingTable[encodingTable[i]] = (byte)i;}decodingTable[65] = decodingTable[97];decodingTable[66] = decodingTable[98];decodingTable[67] = decodingTable[99];decodingTable[68] = decodingTable[100];decodingTable[69] = decodingTable[101];decodingTable[70] = decodingTable[102];int k = 0;int m = 0;for (m = paramString.Length; (m > 0) && (ignore(char.Parse(paramString.Substring(m - 1, 1)))); m--) ;int n = 0;while (n < m){while ((n < m) && (ignore(char.Parse(paramString.Substring(n, 1)))))n++;int i = decodingTable[char.Parse(paramString.Substring(n++, 1))];while ((n < m) && (ignore(char.Parse(paramString.Substring(n, 1)))))n++;int j = decodingTable[char.Parse(paramString.Substring(n++, 1))];paramOutputStream.WriteByte((byte)(i << 4 | j));k++;}return k;}public static bool ignore(char paramChar){return (paramChar == '\n') || (paramChar == '\r') || (paramChar == '\t') || (paramChar == ' ');}}
转载于:https://www.cnblogs.com/zhiyong-ITNote/p/8127447.html
项目开发中,我们总能遇到的那么些坑,不仅是代码上的,还有第三方接口的...相关推荐
- 面试中常问的你在项目开发中遇到过哪些问题怎么回答?
一.你在项目开发中遇到过哪些问题? 此问题的回答一般从三个方向入手,一是技术问题,二是解决方案问题,三是甲方或团队配合问题,针对这三个方面的问题回答示例. 一.技术方面: 开发项目过程中遇到问题是难免 ...
- React项目开发中的数据管理
原文链接:https://blog.csdn.net/hl582567508/article/details/76982756 redux中文文档:http://cn.redux.js.org/ Re ...
- 项目开发中常用JS表单取值方法
项目开发中常用JS表单取值方法 一.常用表单基本取值方法(form1为表单名称,TextBox1为控件ID,以文本框为例,html控件与web服务器控件是一样的) 1.form1.Te ...
- aspnet是前端还是后端_项目开发中无法回避的问题:前端和后端如何合作和并行工作?...
项目开发中无法回避的问题:前端和后端如何合作和并行工作? 前端,后端要想非常愉快的合作开发和集成,那最开始第1步就是要定义一套共用的数据模型接口.这一步是所有工作可以顺利进行的前提. 数据模型接口之后 ...
- ssh项目同时使用mysql跟sqlserver数据库_MSSQL_如何把sqlserver数据迁移到mysql数据库及需要注意事项,在项目开发中,有时由于项目 - phpStudy...
如何把sqlserver数据迁移到mysql数据库及需要注意事项 在项目开发中,有时由于项目开始时候使用的数据库是SQL Server,后来把存储的数据库调整为MySQL,所以需要把SQL Serve ...
- IntelliJ IDEA 项目开发中各个目录的关系
项目根目录(Project Root):本地硬盘中存放项目内容的根目录 项目名称(Project Name):IDEA 保存的项目名称,默认和项目根目录的名称相同,可以修改.有啥作用?通过 IDEA ...
- 项目开发中发布更新文档备注
项目开发中 经常会遇到 某一个团队成员更新了,配置文件但是没有及时沟通导致项目发布后出现异常的情况. 这时就需要一个项目更新发布的规范说明文件,比如每次更新更改了哪些,进行文档备注. 更新的脚本文件也 ...
- Vue项目开发中的点滴积累系列文章
题记 -- 严于律己,精于行动,点滴积累,着眼未来,你也许不负青春 Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框架 本文章 记录从基础入门到实际项目开发中的点点 ...
- 项目开发中对使用的第三方库统一进行管理__添加属性表/页
最近接手的一个项目开发中用到了很多第三方库,比如boost.gdal.xerces等等这些.从接手项目到现在从中学习到了很多之前从未见识过的东西.项目绝大部分都是前辈们写的,对于里面的对第三方库的管理 ...
- 17.项目开发中遇到的问题(this.$parent.$parent子组件调父组件的父组件的方法不可用问题)
前言: 在今天的项目开发中,遇到了一个问题,就是通过this.$parent.$parent.getHostInf()无法去调用其父组件的父组件的方法(因为此时获取的不是其父组件,而是包含父组件的一个 ...
最新文章
- 复杂JSON参数传递后台处理方式
- Vim 快捷键整理【转】
- 超详细的java生成excel文件并下载
- 洛谷P4199 万径人踪灭(manacher+FFT)
- Spring Batch 专题
- 2.Excel公式函数
- 织梦在线报名平台php,DedeCMSv5
- 将a数组部分给b数组c语言,C语言第6章1 数组.ppt
- artTemplate模板引擎的源码拜读
- “看看人家苹果和亚马逊”,嫌薪酬太低,谷歌员工“炮轰”高管
- 爆赞!excel导入mysql并生成数据表
- 全栈语音交互方案免费开放,这次扔开源炸弹的是Rokid
- VXLAN详解(三)
- 动态修改App.Config 和web.Config
- 计算机笔记--【Redis高级】
- DB2数据库如何修改字段名称
- 关于轩辕剑3外传 swd3eDvd.exe报错问题
- Error relaunching VirtualBox VM process:5错误解决
- 小规则让你写出漂亮又高效的程序
- 创建工作站vmware workstation时,提示before you can run vmware several modules must be compiled