以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 关于第三方接口调用 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=183489) |
-- 作者:s111321 -- 发布时间: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) |
-- 作者:有点蓝 -- 发布时间:2022/11/7 14:19:00 -- 这个纯使用.net的类型,和Foxtable没有什么关系的。 在2个项目使用同一个时间(也就是代码里的Date.Now改为一个固定的时间)测试看提交的内容是否完全一样 比较这些变量内容:xmlRequest、Hmac
|
-- 作者:s111321 -- 发布时间: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 |
-- 作者:有点蓝 -- 发布时间:2022/11/8 9:53:00 -- 去掉这2句试试 web.Headers.Add("Content-Type", "application/json")
web.Headers.Add("Content-Length", " ") |