如何使用Java中的Nullable参数调用DocuWare API的.NET方法

时间:2016-05-10 13:23:25

标签: java c#

当我尝试调用.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库。

提前感谢您的帮助。

1 个答案:

答案 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");