以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- HttpClient异步 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=194866) |
||||
-- 作者:nuoyan89 -- 发布时间:2025/1/23 18:33:00 -- HttpClient异步 老师,附件的代码我能使用HttpClient异步吗?
|
||||
-- 作者:有点蓝 -- 发布时间:2025/1/23 20:20:00 -- HttpClient本身不是异步执行的。但是HttpClient可以放到异步函数里使用 |
||||
-- 作者:nuoyan89 -- 发布时间:2025/1/23 21:36:00 -- 但是我现在放到异步函数中也不行,就是当一个请求没有完成的时候,另一个请求开始后就会报错,因为我调取的 API 是要批量推送数据到指定的数据库中. |
||||
-- 作者:有点蓝 -- 发布时间:2025/1/23 21:50:00 -- 这个应该和异步没有什么关系。API开发文档发上来看看 |
||||
-- 作者:nuoyan89 -- 发布时间:2025/1/23 22:04:00 -- 老师,开发文档是这个https://open.chanjet.com/docs/file/apiFile/tcloud/t+dj/t+ccprkd?id=31035 |
||||
-- 作者:有点蓝 -- 发布时间:2025/1/23 22:46:00 -- 这种不需要异步,按顺序提交数据即可。另外2条sql都是查询的{出入库明细} ,没有{出入库主表},所有数据都在一个表里面?如果这样没有必要查2次 |
||||
-- 作者:nuoyan89 -- 发布时间:2025/1/24 8:14:00 -- 是的,所有数据都在一个表里,只有出入库明细 |
||||
-- 作者:有点蓝 -- 发布时间:2025/1/24 8:42:00 -- 这个表有几个单据单号?是一个单据单号就发送一次吗,还是所有的单据单号都一起发送? |
||||
-- 作者:nuoyan89 -- 发布时间:2025/1/24 9:16:00 -- 是一个单据单号发送一次,这个代码应该可以怎么调整呢 |
||||
-- 作者:有点蓝 -- 发布时间:2025/1/24 10:13:00 -- Dim dt As DataTable Dim cmd As New SQLCommand cmd.ConnectionName = "ERP系统" cmd.CommandText = "Select distinct 单据单号 From {出入库明细} Where 状态 = 1 And 单据单号 is not null" dt = cmd.ExecuteReader() Dim i1 As Integer = 1 For Each dr1 As DataRow In dt.DataRows \'获取来自数据库的表明细信息 Dim hc As New HttpClient(Vars("apiurl") & "/tplus/api/v2/productReceive/Create") hc.Headers.Add("appKey", appKey) hc.Headers.Add("appSecret", appSecret) hc.Headers.Add("openToken", accessToken) hc.Headers.Add("Content-Type", "application/json") hc.ContentType = "application/json" Dim jo As New JObject Dim s As String = dr1("单据单号") Dim dt1 As DataTable cmd.CommandText = "Select * From {出入库明细} Where 单据单号= \'" & s & "\' And 状态 = 1" dt1 = cmd.ExecuteReader() Dim dr As DataRow = dt1.DataRows(0) jo("dto") = New JObject jo("dto")("ExternalCode") = s \'外部系统数据编号,后台做唯一性检查 \'jo("dto")("Code") = "单据编号 false" jo("dto")("VoucherType") = New JObject jo("dto")("VoucherType")("Code") = "ST1002" jo("dto")("VoucherDate") = dr("单据日期").ToString jo("dto")("BusiType") = New JObject jo("dto")("Warehouse") = New JObject jo("dto")("Warehouse")("Code") = dr("仓库编码").ToString jo("dto")("BusiType")("Code") = dr("操作编码").ToString jo("dto")("Warehouse")("Name") = dr("库位").ToString jo("dto")("Clerk") = New JObject jo("dto")("Clerk")("Code") = dr("制单人员").ToString jo("dto")("Clerk")("Name") = dr("制单人员").ToString \'jo("dto")("Memo") = "表头备注" \'==========下面是明细信息 Dim jalist As New JArray For i As Integer = 0 To dt1.DataRows.Count - 1 \'获取来自数据库的表明细信息 dr = dt1.DataRows(i) Dim jolist As New JObject jolist("Code") = i \'行号,从1开始自增长 jolist("Inventory") = New JObject \'行号,从1开始自增长 jolist("Inventory")("code") = dr("存货编码").ToString ……自行补齐明细数据 jolist("Amount") = CInt(dr("成本金额")) jalist.Add(jolist) jo("dto")("RDRecordDetails") = jalist Next hc.Content = jo.tostring Dim ret As String = hc.GetData() If ret.Contains("error") Then MsgBox(ret) End If Next |