Foxtable(狐表)用户栏目专家坐堂 → 关于第三方接口调用


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

主题:关于第三方接口调用

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


加好友 发短信
等级:婴狐 帖子:44 积分:522 威望:0 精华:0 注册:2020/6/27 10:03:00
关于第三方接口调用  发帖心情 Post By:2022/11/7 13:58:00 [只看该作者]

请问下,我用试用版做了这个接口,使用正常的,到了正式开发版里面,就提示远程服务器返回错误: (401) 未经授权,这2个版本还有什么不同的吗?下面是语句

'创建日志目录
If FileSys.DirectoryExists("C:\logs") = False Then
    FileSys.CreateDirectory("C:\logs")
End If
'日志文件名称
Dim log As String
log = CStr(Date.Today)
log = log.Replace("-", "")
log = "log" & log
'组JSON
Dim rcjo As New JObject
'报文头
Dim infno As String = "1001"
rcjo("infno") = infno '交易号
Dim Datetime As String
Datetime = Format(Date.Now, "G")
rcjo("inf_time") = Datetime '交易时间
Dim msgid As String
Dim Datetime1 As String
Datetime1 = Datetime.Replace("-", "")
Datetime1 = Datetime1.Replace(":", "")
Datetime1 = Datetime1.Replace(" ", "")
rcjo("msgid") = "D1010019" & Datetime1 & "1001"
rcjo("mdtrtarea_admvs") = "330712"
Dim insuplc_admdvs As String = "330712"
rcjo("insuplc_admdvs") = insuplc_admdvs
rcjo("recer_sys_code") = "FSI_LOCAL"
rcjo("dev_no") = "1"
rcjo("dev_safe_info") = ""
rcjo("fixmedins_code") = "D1010019"
rcjo("fixmedins_name") = "测试"
Dim sign_no As String = ""
rcjo("sign_no") = sign_no
rcjo("input") = New JObject
'报文体
rcjo("input")("signIn") = New JObject
Dim opter_no As String = "005"
rcjo("input")("signIn")("opter_no") = opter_no
Dim mac As String = "00-50-56-B2-07-A5"
rcjo("input")("signIn")("mac") = mac
Dim ip As String = "172.12.100.78"
rcjo("input")("signIn")("ip") = ip
'签名
Dim st As New Date(1970, 1, 1, 8, 0, 0)
Dim timestamp As String = (Date.Now - st).TotalMilliseconds().Tostring
Dim akey As String = "D1010019"
Dim aSecret As String = "ldssdOssdP"
Dim atimestamp As String = timestamp.SubString(0, 10)
Dim abody As String = CompressJson(rcjo)
Dim Hmac As String
Hmac = Hmac_SM3(akey, aSecret, atimestamp, abody)
'调用接口
Dim xmlRequest As String = CompressJson(rcjo)
Dim xml As String = xmlRequest '实例化一个字符转码对象'
Dim encoding As System.Text.Encoding = System.Text.Encoding.GetEncoding("utf-8")
Dim request As System.Net.WebRequest = System.Net.WebRequest.Create("http://www.xxxx.com")
request.headers.set("x-ca-key", "D1010019")
request.headers.set("x-ca-signature", Hmac)
request.Method = "POST"
Dim postdata() As System.Byte = encoding.GetBytes(xmlRequest)
request.ContentLength = postdata.Length
Dim requesstream As System.IO.Stream = request.GetRequestStream()
requesstream.Write(postdata, 0, postdata.Length)
requesstream.Close()
Dim response As System.Net.WebResponse = request.GetResponse()
Dim responsestream As New System.IO.StreamReader(response.GetResponseStream())
Dim html As String = responsestream.ReadToEnd()
requesstream.Close()
response.Close()
Output.Logs(log).Add("入参>>>>>>>>>>>>>>>>>>>>>>>>>>>>:" + xmlRequest)
Output.Logs(log).Add("出参<<<<<<<<<<<<<<<<<<<<<<<<<<<<:" + HTMLDecode(html))
Output.Logs(log).Save("c:\logs\" & log & ".txt", True)




 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109496 积分:557148 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/11/7 14:19:00 [只看该作者]

这个纯使用.net的类型,和Foxtable没有什么关系的。

在2个项目使用同一个时间(也就是代码里的Date.Now改为一个固定的时间)测试看提交的内容是否完全一样

比较这些变量内容:xmlRequest、Hmac 

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


加好友 发短信
等级:婴狐 帖子:44 积分:522 威望:0 精华:0 注册:2020/6/27 10:03:00
  发帖心情 Post By:2022/11/8 9:40:00 [只看该作者]

蓝老师,请问下,我用上面的方式调用接口成功了,用下面这个 HttpClient调用就提示未经授权,能帮忙看下是什么问题吗      

'定义接口
        Dim web As New HttpClient("http://www.xxx.com")
        web.Headers.Add("Content-Type", "application/json")
        web.Headers.Add("Content-Length", " ")
        web.Headers.Add("x-ca-key", akey)
        web.Headers.Add("x-ca-signature", Hmac)
        '输入
        web.Content = xmlRequest
        '输出
        Dim CC1101 As String = web.GetData

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109496 积分:557148 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/11/8 9:53:00 [只看该作者]

去掉这2句试试

        web.Headers.Add("Content-Type", "application/json")
        web.Headers.Add("Content-Length", " ")

 回到顶部