我有一個java的webservice介面程式,有2個方法,在VB環境上呼叫這個介面,以前一直好使,最近不知道為什么,在呼叫介面時出現這樣的問題,方法1 在應用程式中一直都好使,但方法2不好使,webService方法沒有調整過。我在程式登陸時進行了soapClient.MSSoapInit 操作,方法1正常呼叫,但方法2就不能呼叫,提示沒有方法2,必須再重新soapClient.MSSoapInit 后就可以呼叫方法2 了,原來是不需要重新soapClient.MSSoapInit 的,是什么原因?大俠們幫解決一下呀,急死我了!!!
uj5u.com熱心網友回復:
代碼功能歸根結底不是別人幫自己看或講解或注釋出來的;而是被自己靜下心來花足夠長的時間和精力親自動手單步或設斷點或對執行到某步獲得的中間結果顯示或寫到日志檔案中一步一步分析出來的。提醒:再牛×的老師也無法代替學生自己領悟和上廁所!
單步除錯和設斷點除錯是程式員必須掌握的技能之一。
uj5u.com熱心網友回復:
謝謝老師,我單步除錯執行到呼叫方法地方,uj5u.com熱心網友回復:
' Set cLnt = New SoapClient30' Call cLnt.MSSoapInit(strSvc & "WSImpAndExpWeighInfoFacade?WSDL") '加上此行就可以執行下面的方法
' cLnt.ConnectorProperty("Timeout") = "90000"
result = cLnt.importWeighInfo(weighString) '執行到此處提示無這個方法,
uj5u.com熱心網友回復:
Set cLnt = New SoapClient30這行怎么可以注釋掉呢?
uj5u.com熱心網友回復:
我發貼時注釋了,錯了,下面是我程式的源代碼,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
uj5u.com熱心網友回復:
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次甚至無限回圈,記錄以上各數值,再隔至少一小時,越長越好,比如一個月,再記錄以上各數值。如果以上兩組數值的差較大或隨時間流逝不斷增加,則鐵定有對應資源的資源泄漏!
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/80916.html
標籤:網絡編程
上一篇:本人vb新手,請教個問題
