当我尝试调用.NET方法 - 使用Javonet从Java创建'我得到一条消息时该方法不存在,因为我没有传递正确的参数 -
DocuWare.Platform.ServerClient.ServiceConnection
Create(System.Uri,
System.String,
System.String,
System.String,
System.Nullable`1[DocuWare.Platform.ServerClient.DWProductTypes],
System.Net.Http.HttpMessageHandler,
System.Net.Http.Headers.ProductInfoHeaderValue[]
)
我的代码是 -
NObject objUri = Javonet.New("Uri","http://<IP-address>/DocuWare/Platform");
NType serviceConnectionClass = Javonet.getType("DocuWare.Platform.ServerClient.ServiceConnection");
NObject objProductInfoHeaderValue = Javonet.New("System.Net.Http.Headers.ProductInfoHeaderValue","DocuWare+.NET+API+Test+Client", "1.0");
NObject[] objProductInfoHeaderValueArray = new NObject[] {objProductInfoHeaderValue};
NType typeHttpMessageHandler = Javonet.getType("System.Net.Http.HttpMessageHandler");
NType typeNullable = Javonet.getType("System.Nullable");
serviceConnectionClass.invoke("Create",objUri,"admin","admin","<company-name>",typeNullable,typeHttpMessageHandler,objProductInfoHeaderValueArray);
我的主要问题是不知道如何为 -
生成'Nullable'对象DocuWare.Platform.ServerClient.DWProductTypes
System.Net.Http.HttpMessageHandler
System.Net.Http.Headers.ProductInfoHeaderValue[]
我认为这不是JavONet的问题,但我需要先解决这个问题才能执行概念验证
以下是Docuware平台的链接 -
http://help.docuware.com/sdk/platform-eagle/html/66b2ed1e-2aef-452a-97cd-5014bbf0242b.htm
我使用Tomcat应用服务器和JSP运行测试。我知道正在发现.NET .dll并且正确激活了Javonet库。
提前感谢您的帮助。
答案 0 :(得分:0)
通常对于可为空的参数,你可以在你的情况下传递常规目标类型一些枚举值“ DWProductTypes ”,或者如果你想传递null只是传递“null”;
所以你应该拨打电话:
serviceConnectionClass.invoke("Create",objUri,"admin", "admin","Intermodal Tank",new NEnum("DWProductTypes","DocuWareClient"),typeHttpMessageHandler,objProductInfoHeaderValueArray);
您可以在此处找到DWProductTypes的所有可能值: http://help.docuware.com/sdk/platform/html/T_DocuWare_Platform_ServerClient_DWProductTypes.htm
在这里您可以找到有关使用枚举的更多信息: https://www.javonet.com/quick-start-guide/#Enums_How_To_Work_With_Enums
或传递null:
serviceConnectionClass.invoke("Create",objUri,"admin", "admin","Intermodal Tank",null,typeHttpMessageHandler,objProductInfoHeaderValueArray);
For argument HttpMessageHandler just create the instance:
NObject typeHttpMessageHandler = Javonet.New("SomeConcreteTypeInheritingFromHttpMessageHandler");
对于 ProductInfoHeaderValue 数组,您应该创建 NObjects 的Java数组并将其作为参数传递:
NObject[] objProductInfoHeaderValueArray = new NObject[1];
objProductInfoHeaderValueArray[0] = Javonet.New("ProductInfoHeaderValue","productName","version");