VB调用Java开发的webservice接口问题

yx0511 2016-01-31 08:16:12
我有一个java的webservice接口程序,有2个方法,在VB环境上调用这个接口,以前一直好使,最近不知道为什么,在调用接口时出现这样的问题,方法1 在应用程序中一直都好使,但方法2不好使,webService方法没有调整过。我在程序登陆时进行了soapClient.MSSoapInit 操作,方法1正常调用,但方法2就不能调用,提示没有方法2,必须再重新soapClient.MSSoapInit 后就可以调用方法2 了,原来是不需要重新soapClient.MSSoapInit 的,是什么原因?大侠们帮解决一下呀,急死我了!!!
...全文
1560 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-02-02
  • 打赏
  • 举报
回复
            Dim result As String
            Dim cLnt As New SoapClient30
            If LSSC.Checked = True Then
                result = cLnt.importWeighInfo2(Info)
            Else
                 'Call cLnt.MSSoapInit(strSvc & "WSImpAndExpWeighInfoFacade?WSDL")
                result = cLnt.importWeighInfo(Info)   '这个位置不出现问题
            End If
            Set cLnt=Nothing '★★★★★★★★★★
            If Mid(result, 1, 1) = "1" Then
检查是否资源泄漏的办法之一: 在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象 让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资源泄漏!
yx0511 2016-02-02
  • 打赏
  • 举报
回复
我发贴时注释了,错了,下面是我程序的源代码,result = cLnt.importWeighInfo(Info) '这个位置不出现问题。谢谢老师,帮我分析一下,程序一直都在运行,突然出现这个问题,没有做过任何改动。Java的webService没有修改,本地程序也没有修改,就是突然出现问题,客户端不能调用方法了,其他代码地方使用webService均正常。
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim Info As String = ""
Dim baund As String
Dim tile As String = ""
If t_TrainNum1.Text = "" Then
MsgBox("车号不能为空!", 64, "温馨提示")
Exit Sub
End If
'BandNo
If BandNo.Text = "" Then
MsgBox("磅单号不能为空!", 64, "温馨提示")
Exit Sub
End If
If CrossBand.Text = "请选择毛重衡器" Then
MsgBox("毛重衡器不能为空!", 64, "提示")
Exit Sub
End If
If TareBand.Text = "请选择皮重衡器" Then
MsgBox("皮重衡器不能为空!", 64, "提示")
Exit Sub
End If
If CrossOpreator.Text = "请选择" Then
MsgBox("请选择毛重司磅员!", 64, "提示")
Exit Sub
End If
If TareOpreator.Text = "请选择" Then
MsgBox("请选择皮重司磅员!", 64, "提示")
Exit Sub
End If
If t_Gross.Text = 0 Then
MsgBox("毛重不能为零!", 64, "提示")
Exit Sub
End If
If t_Tare.Text = 0 Then
MsgBox("皮重不能为零!", 64, "提示")
Exit Sub
End If
If Trim(t_Demo.Text) = "" Then
MsgBox("手工录入原因不能为空!", 64, "提示")
Exit Sub
End If
Try
Select Case CrossBand.Text
Case "一号汽车衡"
tile = "Q1"
Case "二号汽车衡"
tile = "Q2"
Case "三号汽车衡"
tile = "Q3"
Case "四号汽车衡"
tile = "Q4"
Case "五号汽车衡"
tile = "Q5"
Case "六号汽车衡"
tile = "Q6"
Case "七号汽车衡"
tile = "Q7"
Case "八号汽车衡"
tile = "Q8"
Case "九号汽车衡"
tile = "Q9"
Case "十号汽车衡"
tile = "QA"
Case "十一号汽车衡"
tile = "QB"
Case "十二号汽车衡"
tile = "QC"
Case "十三号汽车衡"
tile = "QD"
Case "十四号汽车衡"
tile = "QE"
Case "十五号汽车衡"
tile = "QF"
Case "一号轨道衡"
tile = "G1"
Case "二号轨道衡"
tile = "G2"
Case "三号轨道衡"
tile = "G3"
Case "四号轨道衡"
tile = "G4"
Case "五号轨道衡"
tile = "G5"
Case "六号轨道衡"
tile = "G6"
Case "七号轨道衡"
tile = "G7"
Case "八号轨道衡"
tile = "G8"
Case "九号轨道衡"
tile = "G9"
Case "十号轨道衡"
tile = "GA"
Case "十一号轨道衡"
tile = "GB"
Case "十二号轨道衡"
tile = "GC"
Case "十三号轨道衡"
tile = "GD"
Case "十四号轨道衡"
tile = "GE"
Case "十五号轨道衡"
tile = "GF"

End Select
If AutoBaund.Checked = True Then
baund = GetNewBaundNo(OWeightORG.GetBaundNO)
BandNo.Text = tile & baund
End If


If CrossBand.SelectedIndex = -1 Then CrossBand.SelectedIndex = 0
If TareBand.SelectedIndex = -1 Then TareBand.SelectedIndex = 0
If LSSC.Checked = True Then
'Info = weighNoticeEntryID & Separator & _
' BandNo.Text & Separator & _
' t_TrainNum1.Text & Separator & _
' t_Gross.Text & Separator & _
' Format(CDate(Dt_StartDate.Text), "yyMMddHHmmss") & Separator & _
' t_Tare.Text & Separator & _
' Format(CDate(Dt_EndDate.Text), "yyMMddHHmmss") & Separator & _
' t_Net.Text & Separator & _
' crossCode(CrossBand.SelectedIndex) & Separator & _
' tareCode(TareBand.SelectedIndex) & Separator & _
' Trim(crossOP(CrossOpreator.SelectedIndex)) & Separator & _
' Trim(tareOP(TareOpreator.SelectedIndex)) & Separator & MaterialNumber & Separator & Separator & "01.01" & Separator & _
' Cb_Consignee.Text & Separator & Cb_Consigner.Text & Separator & t_Demo.Text

Else
Info = weighNoticeEntryID & Separator & _
BandNo.Text & Separator & _
t_TrainNum1.Text & Separator & _
t_Gross.Text & Separator & _
Format(CDate(Dt_StartDate.Text), "yyMMddHHmmss") & Separator & _
t_Tare.Text & Separator & _
Format(CDate(Dt_EndDate.Text), "yyMMddHHmmss") & Separator & _
t_Net.Text & Separator & _
crossCode(CrossBand.SelectedIndex) & Separator & _
tareCode(TareBand.SelectedIndex) & Separator & _
Trim(crossOP(CrossOpreator.SelectedIndex)) & Separator & _
Trim(tareOP(TareOpreator.SelectedIndex)) & Separator & MaterialNumber & Separator & Separator & "01.01" & Separator & t_Demo.Text & "-此单据为手工录入" & Separator & t_TrainType.Text

If MsgBox(" 车号: " & t_TrainNum1.Text & vbCrLf & vbCrLf & _
" 总重: " & t_Gross.Text & vbCrLf & vbCrLf & _
" 自重: " & t_Tare.Text & vbCrLf & vbCrLf & _
" 净重: " & t_Net.Text & vbCrLf & vbCrLf & _
" 毛重衡器: " & CrossBand.Text & vbCrLf & vbCrLf & _
" 皮重衡器: " & TareBand.Text & vbCrLf & vbCrLf & _
" 毛重时间: " & Dt_StartDate.Text & vbCrLf & vbCrLf & _
" 皮重时间: " & Dt_EndDate.Text & vbCrLf & vbCrLf & _
" 收货单位: " & Cb_Consigner.Text & vbCrLf & vbCrLf & _
" 发货单位: " & Cb_Consignee.Text & vbCrLf & vbCrLf & _
" 物资名称: " & Cb_Goods.Text & vbCrLf & vbCrLf & _
" 磅单号: " & BandNo.Text & vbCrLf & vbCrLf & _
"毛重司磅员: " & CrossOpreator.Text & vbCrLf & vbCrLf & _
"皮重司磅员: " & TareOpreator.Text, MsgBoxStyle.YesNo, "手工录入信息提示") = MsgBoxResult.No Then
Exit Sub
End If

End If
Dim result As String
Dim cLnt As New SoapClient30
If LSSC.Checked = True Then
result = cLnt.importWeighInfo2(Info)
Else
'Call cLnt.MSSoapInit(strSvc & "WSImpAndExpWeighInfoFacade?WSDL")
result = cLnt.importWeighInfo(Info) '这个位置不出现问题
End If
If Mid(result, 1, 1) = "1" Then
Dim sqlstring As String = String.Empty
sqlstring = "Insert into WeightBridge_DB_Weight(磅单号,发货单位,收货单位,物资,毛重,皮重,净重," & _
"毛重时间,皮重时间,毛重操作员,皮重操作员,上传标志,审核次数,打印次数,修改标志,作废标志" & _
",车号,车型,标重,检斤次数,二次检斤顺序,毛重衡器,皮重衡器,检斤类型,流向,检斤方式,备注,分录ID,物料编码) values ('" & _
BandNo.Text & "','" & Cb_Consignee.Text & "','" & Cb_Consigner.Text & "','" & Cb_Goods.Text & "'," & t_Gross.Text & "," & t_Tare.Text & "," & _
t_Net.Text & ",'" & Dt_StartDate.Text & "','" & Dt_EndDate.Text & "','" & Ob_Op.Op_Name & "','" & Ob_Op.Op_Name & "'," & _
1 & "," & 1 & "," & 0 & "," & 0 & "," & 0 & ",'" & _
t_TrainNum1.Text & "','" & t_TrainType.Text & "'," & 0 & "," & 2 & ",'" & "" & "','" & CrossBand.Text & "','" & _
TareBand.Text & "','" & cb_WeightType.Text & "','" & Cb_ComTo.Text & "','','" & t_Demo.Text & "','" & weighNoticeEntryID & "','" & MaterialNumber & "')"
SQLDBFactory.ExecuteCommand(sqlstring)
MaterialNumber = ""
weighNoticeEntryID = ""
MsgBox("上传成功!", 0, "上传成功")
Log.Log_Type = "手工录入"
Log.Log_StationName = Object_ParSet.Station_Name
Log.Log_Memo = t_Demo.Text
Log.Log_DateTime = Now
Log.Log_BaundNO = BandNo.Text
Log.Log_OP = Ob_Op.Op_Name
Log.Insertlog(False)
Else
MsgBox("上传失败!" & result, 0, "上传失败")
End If
Catch ex As Exception
Log.ToLogTxt("[" & Now & "]" & "FrmPersonWeight-Button2_Click:" & ex.Message)
End Try
End Sub
赵4老师 2016-02-01
  • 打赏
  • 举报
回复
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒:再牛×的老师也无法代替学生自己领悟和上厕所! 单步调试和设断点调试是程序员必须掌握的技能之一。
赵4老师 2016-02-01
  • 打赏
  • 举报
回复
Set cLnt = New SoapClient30 这行怎么可以注释掉呢?
yx0511 2016-02-01
  • 打赏
  • 举报
回复
' Set cLnt = New SoapClient30 ' Call cLnt.MSSoapInit(strSvc & "WSImpAndExpWeighInfoFacade?WSDL") '加上此行就可以执行下面的方法 ' cLnt.ConnectorProperty("Timeout") = "90000" result = cLnt.importWeighInfo(weighString) '执行到此处提示无这个方法,
yx0511 2016-02-01
  • 打赏
  • 举报
回复
谢谢老师,我单步调试执行到调用方法地方,

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧