我已经用Java(RMI)实现了一个WebService。在Excel中,我有两个Makros,一个通过Web服务从数据库中读取数据。另一个写入数据库。
通过Web服务从数据库中读取数据没有问题(函数:MyData[] getData() {...}
)但当我试图调用该方法时,该方法应该将数据写入数据库,我遇到了问题,即VBA代码中的给定数据在Java代码中为null。
功能:public void setData(final MyData[]) {...}
我调试后发现,VBA代码中的参数不为空。它只在Java代码中为null。
那么,有人知道数据可能会丢失在哪里吗?
我想我可能对XML或类似的东西有问题,但我真的不知道从哪里查找错误。
当然:这是代码-我把它缩短了一点,但主要功能是
顺便说一句,我现在把数据类型改为long,现在我得到了IllegalArgumentException
Java:
@WebMethod(operationName = "setData", action = "setData")
public void setData(final long k)
{
myValue = k;
}
VBA在第1张中,我称之为:
Call dataService.wsm_setData(5)
以及在serviceFile(使用Web Service Toolkit生成)中:
Private sc_DataServic As SoapClient30
Private Const c_WSDL_URL As String = "http://pcname:8010/myurl/data?wsdl"
Private Const c_SERVICE As String = "DataServiceService"
Private Const c_PORT As String = "DataServicePort"
Private Const c_SERVICE_NAMESPACE As String = "http://myurl"
Private Sub Class_Initialize()
Set sc_DataServic = New SoapClient30
sc_DataServic.MSSoapInit2 c_WSDL_URL, str_WSML, c_SERVICE, c_PORT, c_SERVICE_NAMESPACE
sc_DataServic.ConnectorProperty("ProxyServer") = "<CURRENT_USER>"
sc_DataServic.ConnectorProperty("EnableAutoProxy") = True
Set sc_DataServic.ClientProperty("GCTMObjectFactory") = New clsof_Factory_Data
End Sub
Public Function wsm_setData(ByVal dcml_arg0 As Double)
On Error GoTo wsm_setDataTrap
sc_DataServic.setData dcml_arg0
Set sc_DataServic = Nothing
Exit Function
wsm_setDataTrap:
DataServicErrorHandler "wsm_setData"
End Function