1

我需要更改一个对象的 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此变量?

4

2 回答 2

2

您需要使用“原始”反射,而不是 Spring 的PropertyUtils. 它包含在 Java 教程中。代码将(模异常处理)看起来像这样:

DwsSoap port = ...;
Field hField = port.getClass().getField("h");
hField.setAccessible(true); // the field will probably be private
Object h = hField.get(port);
于 2013-05-30T21:50:28.750 回答
0

我最终通过 java 更改了 wsdl 的端点地址,如下所示:

String sharePointDWSLocation = spDir + "_vti_bin/Dws.asmx"
DwsSoap port = service.getDwsSoap();
((BindingProvider)port).getRequestContext().put(
    BindingProvider.ENDPOINT_ADDRESS_PROPERTY, sharePointDWSLocation)
于 2013-06-03T20:20:28.387 回答