我需要更改对象的URL,但我既没有源代码,也没有此对象的任何getter和setter。我能够在Eclipse调试器中看到这些值,但我没有办法修改它。
变量port
接收一个我没有要访问的源代码的对象(实现DwsSoap
接口)。
DwsSoap port = service.getDwsSoap();
我希望更改此对象中的一个名为address
的字段,但我不确定如何更改或检索它。
要访问address
,我需要先访问h
字段(如上图所示)。这就是我尝试这样做的方式:
Object h = PropertyUtils.getProperty(port, "h");
但我得到NoSuchMethodException
:
java.lang.NoSuchMethodException: Unknown property 'h'
有没有办法可以访问和更改此变量的address
?
答案 0 :(得分:2)
你需要使用“原始”反射,而不是Spring的PropertyUtils
。这是covered in the Java tutorial。代码将(模数异常处理)看起来像这样:
DwsSoap port = ...;
Field hField = port.getClass().getField("h");
hField.setAccessible(true); // the field will probably be private
Object h = hField.get(port);
答案 1 :(得分:0)
我最终通过java更改了wsdl的端点地址,如下所示:
String sharePointDWSLocation = spDir + "_vti_bin/Dws.asmx"
DwsSoap port = service.getDwsSoap();
((BindingProvider)port).getRequestContext().put(
BindingProvider.ENDPOINT_ADDRESS_PROPERTY, sharePointDWSLocation)