Foxtable(狐表)用户栏目专家坐堂 → 有点甜老师,帮忙看个接口代码怎么写可以吗?


  共有3350人关注过本帖树形打印复制链接

主题:有点甜老师,帮忙看个接口代码怎么写可以吗?

帅哥哟,离线,有人找我吗?
huangxueyao
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:443 积分:3530 威望:0 精华:0 注册:2013/2/9 12:45:00
有点甜老师,帮忙看个接口代码怎么写可以吗?  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:443 积分:3530 威望:0 精华:0 注册:2013/2/9 12:45:00
  发帖心情 Post By:2018/9/26 21:22:00 [只看该作者]

我用抓包工具发现请求方式是get,对方文档要求用post才对,httpclient怎么改?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/26 22:01:00 [只看该作者]

把json数据发送过去,如

 

Dim url As String = "https://api.weixin.qq.com/cgi-bin/tags/create?access_token={0}"
Dim hc As New HttpClient(CExp(url, Functions.Execute("GetAccessToken")))
Dim jo As New JObject()
jo("tag") = New JObject()
jo("tag")("name") = "vip"
hc.Content = jo.ToString

jo = JObject.Parse(hc.GetData)


 回到顶部
帅哥哟,离线,有人找我吗?
huangxueyao
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:443 积分:3530 威望:0 精华:0 注册:2013/2/9 12:45:00
  发帖心情 Post By:2018/9/26 22:08:00 [只看该作者]

对方的api是要把
key+json格式的数据 生成一个MD5字符串

再把这个字符串加到请求头里面发送过去。

所以无法直接用json、content传递数据

    1.3 请求头


  • User-Agent: openApi
  • Content-Type: application/json; charset=utf-8
  • accept-encoding: gzip,deflate
  • time-stamp: 1437528688233
  • data-signature: BF706E6AC693BA3B1BABD32E6713431D

  • time-stamp: 时间戳, 它是自 1970年1月1日(08:00:00 GMT)至当前时间的总毫秒数。它也被称为Unix时间戳(Unix Timestamp)
  • data-signature:请求体通过md5算法生成的签名

 回到顶部
帅哥哟,离线,有人找我吗?
huangxueyao
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:443 积分:3530 威望:0 精华:0 注册:2013/2/9 12:45:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/26 22:21:00 [只看该作者]

1、你至少要把json发过去啊

 

hc.Content = jo.ToString

 

2、合成md5字符串的,你看人家文档要求合成


 回到顶部
帅哥哟,离线,有人找我吗?
huangxueyao
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:443 积分:3530 威望:0 精华:0 注册:2013/2/9 12:45:00
  发帖心情 Post By: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)


图片点击可在新窗口打开查看此主题相关图片如下:tim图片20180927082950.png
图片点击可在新窗口打开查看

为什么我已经指定了Content-Type但是上传的又不一样?


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/27 8:50:00 [只看该作者]

hc.Headers.Add("Content-Type","application/json; charset=utf-8")

 

改成

 

hc.ContentType = "application/json; charset=utf-8"


 回到顶部
帅哥哟,离线,有人找我吗?
huangxueyao
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:443 积分:3530 威望:0 精华:0 注册:2013/2/9 12:45:00
  发帖心情 Post By:2018/9/27 10:19:00 [只看该作者]

可以了,谢谢

 回到顶部
帅哥哟,离线,有人找我吗?
zhy400137
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1133 积分:8227 威望:0 精华:0 注册:2013/11/3 19:00:00
  发帖心情 Post By:2019/7/17 22:38:00 [只看该作者]

mark

 回到顶部