You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET中WebService数据插入与读取问题求助

解决WebService组件数据传递与返回值读取问题

看起来你遇到的核心问题是没把组件对象正确传入WebService方法的参数集合里,而且调用时传错了对象。另外代码里还有几处语法和类型转换的小问题,我来一步步帮你修正:

1. 修正语法与类型转换的安全问题

你的空值判断代码有语法错误,直接用CDbl转换用户输入还容易抛出异常,建议用Double.TryParse做安全处理:

' 安全处理空值与类型转换,避免输入非数字时崩溃
Dim peso1 As Double = 0
Double.TryParse(TexPeso1.Text, peso1)

Dim peso2 As Double = 0
Double.TryParse(TexPeso2.Text, peso2)

Dim Peso As Double = Math.Max(peso1, peso2)

2. 正确填充组件集合

根据你的描述,WebService的ZWS_BAS_02方法需要接收I_T_BAS_COMPONENT集合参数。你已经创建了单个组件对象,现在需要把它加入对应集合,再赋值给svc_ZWS_BAS_02的属性:

' 初始化WebService主参数对象
Dim svc_ZWS_BAS_02 As New ServiceReference1.ZWS_BAS_02

' 创建组件集合(WebService引用通常会生成List(Of 实体类)类型的集合)
Dim componentList As New List(Of ServiceReference1.ZWS_BAS_02_COMPONENT)

' 填充组件对象(这里可以添加多个组件,如果你需要插入多组数据)
Dim svc_ZWS_BAS_02_COMP As New ServiceReference1.ZWS_BAS_02_COMPONENT
svc_ZWS_BAS_02_COMP.AUFNR = TexNOrden.Text
svc_ZWS_BAS_02_COMP.WERKS = TexNCentro.Text
svc_ZWS_BAS_02_COMP.COMP = TexComponente.Text
svc_ZWS_BAS_02_COMP.CHARG = TexLote.Text
svc_ZWS_BAS_02_COMP.CHARG2 = TexLoteReal.Text ' 取消注释,补上第5个变量
svc_ZWS_BAS_02_COMP.BDMNG = Peso ' 第6个变量
svc_ZWS_BAS_02_COMP.MEINS = TexUnMedidaCantNotificada.Text ' 第7个变量
' 补上你的第8个变量,比如:
' svc_ZWS_BAS_02_COMP.YOUR_EIGHTH_FIELD = YourTargetControl.Text

' 将组件对象加入集合
componentList.Add(svc_ZWS_BAS_02_COMP)

' 把集合赋值给主参数对象的对应属性
' 如果WebService要求数组类型,就用ToArray();如果是List类型直接赋值即可
svc_ZWS_BAS_02.I_T_BAS_COMPONENT = componentList.ToArray()

3. 修正WebService方法调用

现在用填充好的svc_ZWS_BAS_02对象调用方法就没问题了:

' 初始化代理并设置身份凭证
Dim proxy As New ServiceReference1.ZWS_BASClient
proxy.ClientCredentials.UserName.UserName = "BASCULA"
proxy.ClientCredentials.UserName.Password = "friasBascula"

' 调用方法并获取返回结果
Dim resultado = proxy.ZWS_BAS_02(svc_ZWS_BAS_02)

4. 读取返回的3个变量

调用成功后,resultado对象里包含你需要的返回数据,根据WebService的定义直接访问对应属性即可:

' 示例:根据WebService实际返回结构调整属性名
If resultado IsNot Nothing Then
    Dim errorCode As String = resultado.ZWS_BAS_02_ERR.ERR_CODE
    Dim errorMsg As String = resultado.ZWS_BAS_02_ERR.ERR_MSG
    Dim businessData As String = resultado.YOUR_RETURN_FIELD_NAME ' 替换为实际返回属性名
    
    ' 这里可以把返回值绑定到界面控件,或者做后续业务处理
End If

完整修正后的代码

' Inicializo el WebService , initialize the webservice
Dim svc_ZWS_BAS_02 As New ServiceReference1.ZWS_BAS_02
Dim svc_ZWS_BAS_02_ERR As New ServiceReference1.ZWS_BAS_02_ERROR

' 安全处理空值与类型转换
Dim peso1 As Double = 0
Double.TryParse(TexPeso1.Text, peso1)

Dim peso2 As Double = 0
Double.TryParse(TexPeso2.Text, peso2)

Dim Peso As Double = Math.Max(peso1, peso2)

' ASIGNO VALORES A LAS VARIABLES DE ZWS_BAS_02_COMPONENT , store data on variables
Dim componentList As New List(Of ServiceReference1.ZWS_BAS_02_COMPONENT)
Dim svc_ZWS_BAS_02_COMP As New ServiceReference1.ZWS_BAS_02_COMPONENT
svc_ZWS_BAS_02_COMP.AUFNR = TexNOrden.Text
svc_ZWS_BAS_02_COMP.WERKS = TexNCentro.Text
svc_ZWS_BAS_02_COMP.COMP = TexComponente.Text
svc_ZWS_BAS_02_COMP.CHARG = TexLote.Text
svc_ZWS_BAS_02_COMP.CHARG2 = TexLoteReal.Text
svc_ZWS_BAS_02_COMP.BDMNG = Peso
svc_ZWS_BAS_02_COMP.MEINS = TexUnMedidaCantNotificada.Text
' 补充第8个变量的赋值
' svc_ZWS_BAS_02_COMP.YOUR_EIGHTH_FIELD = YourControl.Text

componentList.Add(svc_ZWS_BAS_02_COMP)
svc_ZWS_BAS_02.I_T_BAS_COMPONENT = componentList.ToArray() ' 根据实际类型调整

' llamo al metodo , call method
Dim proxy As New ServiceReference1.ZWS_BASClient
' le paso el usuario y el password , user and password
proxy.ClientCredentials.UserName.UserName = "BASCULA"
proxy.ClientCredentials.UserName.Password = "friasBascula"

Dim resultado = proxy.ZWS_BAS_02(svc_ZWS_BAS_02) ' 现在可以正常调用了

' 读取返回的3个变量(根据WebService实际结构调整)
If resultado IsNot Nothing Then
    Dim errorCode = resultado.ZWS_BAS_02_ERR.ERR_CODE
    Dim errorMessage = resultado.ZWS_BAS_02_ERR.ERR_MSG
    Dim returnValue = resultado.SOME_RETURN_PROPERTY ' 替换为实际属性名
    ' 后续处理逻辑
End If

小提示:如果I_T_BAS_COMPONENT的类型是List(Of ...)而非数组,直接把componentList赋值给svc_ZWS_BAS_02.I_T_BAS_COMPONENT即可,不用调用ToArray()。另外返回值的属性名需要你在Visual Studio里查看ZWS_BAS_02方法的返回类型结构来确认。

内容的提问来源于stack exchange,提问作者Ivan Hernandez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:23:31