以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 有点甜老师,帮忙看个接口代码怎么写可以吗? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=125351) |
|
-- 作者:huangxueyao -- 发布时间:2018/9/26 20:24:00 -- 有点甜老师,帮忙看个接口代码怎么写可以吗? Dim hc As New HttpClient("https://area16-win.pospal.cn:443/pospal-api2/openapi/v1/customerOpenApi/queryByNumber") hc.Headers.Add("User-Agent","openApi") hc.Headers.Add("Content-Type","application/json; charset=utf-8") hc.Headers.Add("accept-encoding","gzip,deflate") Dim ts As TimeSpan = Date.now - #1/1/1970 00:00:00# \'从1970年开始算毫秒值 hc.Headers.Add("time-stamp",ts.TotalMilliseconds) 以下内容是专门发给有点甜浏览 jo = JObject.Parse(hc.GetData) MessageBox.Show(jo("status")) 这是对方的接口格式规范地址:http://www.pospal.cn/openplatform/interactiveformatdescription.html 他是把Json内容加密成MD5然后加载请求头里面的。 上面代码接的是会员查询接口:http://www.pospal.cn/openplatform/customerapi.html#queryByNumber 我按照做了个但是一直无法返回正确数据,一直都是返回error。 搞不懂是哪里出了问题,希望能帮忙看看,谢谢。 |
|
-- 作者:huangxueyao -- 发布时间:2018/9/26 21:22:00 -- 我用抓包工具发现请求方式是get,对方文档要求用post才对,httpclient怎么改? |
|
-- 作者:有点甜 -- 发布时间:2018/9/26 22:01:00 -- 把json数据发送过去,如
Dim url As String = "https://api.weixin.qq.com/cgi-bin/tags/create?access_token={0}" |
|
-- 作者:huangxueyao -- 发布时间:2018/9/26 22:08:00 -- 对方的api是要把 key+json格式的数据 生成一个MD5字符串 再把这个字符串加到请求头里面发送过去。 所以无法直接用json、content传递数据
1.3 请求头 |
|
-- 作者:huangxueyao -- 发布时间:2018/9/26 22:09:00 -- Dim req = System.Net.WebRequest.Create("https://area16-win.pospal.cn:443/pospal-api2/openapi/v1/openApiLimitAccess/queryAccessTimes") req.Method = "POST" req.C req.Headers.Add("User-Agent","openApi") \'req.UserAgent="openApi" req.Headers.Add("accept-encoding","gzip,deflate") Dim ts As TimeSpan = Date.now - #1/1/1970 00:00:00# \'从1970年开始算毫秒值 req.Headers.Add("time-stamp",CLng(ts.TotalMilliseconds)) \'生成的毫秒可能带小数 Dim jo As New JObject() jo("appId") = "BA592EDDA" \'jo("customerNum") = "2013003001" msgbox(CompressJson(jo)) Dim st As String = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile("17229" + CompressJson(jo), "MD5") msgbox(st) req.Headers.Add("data-signature",st) Dim pos = req.GetResponse Dim stm As System.IO.Stream = pos.GetResponseStream() Dim reader As New System.IO.StreamReader(stm) Dim str As String = reader.ReadToEnd pos.Close stm.Close reader.close Dim jo1 As JObject = Jobject.Parse(str) msgbox(jo1.ToString) 我尝试写成这样也不行,一堆报错
[此贴子已经被作者于2018/9/26 22:08:48编辑过]
|
|
-- 作者:有点甜 -- 发布时间:2018/9/26 22:21:00 -- 1、你至少要把json发过去啊
hc.Content = jo.ToString
2、合成md5字符串的,你看人家文档要求合成 |
|
-- 作者:huangxueyao -- 发布时间:2018/9/27 8:31:00 -- Dim hc As New HttpClient("https://area16-win.pospal.cn:443/pospal-api2/openapi/v1/customerOpenApi/queryByNumber") hc.Headers.Add("User-Agent","openApi") hc.Headers.Add("Content-Type","application/json; charset=utf-8") hc.Headers.Add("accept-encoding","gzip,deflate") Dim ts As TimeSpan = Date.now - #1/1/1970 00:00:00# \'从1970年开始算毫秒值 hc.Headers.Add("time-stamp",clng(ts.TotalMilliseconds)) Dim jo As New JObject() jo("appId") = "E83E8A" jo("customerNum") = "000185" msgbox(CompressJson(jo)) Dim st As String = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile("30" + CompressJson(jo), "MD5") msgbox(st) hc.Headers.Add("data-signature",st) hc.Content = jo.ToString jo = JObject.Parse(hc.GetData) MessageBox.Show(jo.ToString) 为什么我已经指定了Content-Type但是上传的又不一样?
|
|
-- 作者:有点甜 -- 发布时间:2018/9/27 8:50:00 -- hc.Headers.Add("Content-Type","application/json; charset=utf-8")
改成
hc.ContentType = "application/json; charset=utf-8" |
|
-- 作者:huangxueyao -- 发布时间:2018/9/27 10:19:00 -- 可以了,谢谢 |
|
-- 作者:zhy400137 -- 发布时间:2019/7/17 22:38:00 -- mark |