如何使用java中的可空参数调用docuware api的.net方法

wdebmtf2  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(577)

当我尝试使用javonet从java调用.net方法-“create”时,我得到一条消息,该方法不存在,因为我没有传递正确的参数-

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);

我的主要问题是不知道如何为-

DocuWare.Platform.ServerClient.DWProductTypes
System.Net.Http.HttpMessageHandler
System.Net.Http.Headers.ProductInfoHeaderValue[]

我不认为这是一个问题,但我需要得到过去这个问题之前,我可以执行一个概念证明
以下是docuware平台的链接-
http://help.docuware.com/sdk/platform-eagle/html/66b2ed1e-2aef-452a-97cd-5014bbf0242b.htm
我正在使用tomcatappserver和jsp运行测试。我知道.net.dll正在被找到,javonet库正在被正确激活。
提前谢谢你的帮助。

vuv7lop3

vuv7lop31#

通常,对于可为null的参数,您可以传递常规目标类型(在本例中是“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
或传递空值:

serviceConnectionClass.invoke("Create",objUri,"admin", "admin","Intermodal Tank",null,typeHttpMessageHandler,objProductInfoHeaderValueArray);

For argument HttpMessageHandler just create the instance:
NObject typeHttpMessageHandler = Javonet.New("SomeConcreteTypeInheritingFromHttpMessageHandler");

对于productinfoheadervalue数组,您应该创建noObjects的java数组并将其作为参数传递:

NObject[] objProductInfoHeaderValueArray = new NObject[1];
objProductInfoHeaderValueArray[0] = Javonet.New("ProductInfoHeaderValue","productName","version");

相关问题