调用Web服务方法时无法转换对象错误

时间:2014-03-18 06:50:41

标签: java web-services groovy

我正在尝试使用网络服务[http://www.webservicex.net/ConvertSpeed.asmx?WSDL]  并在其中调用一个方法。

它只有一个名为SpeedUnit的方法,并尝试将其与自定义参数一起使用。

只有在我提供以下代码

时才有效
double res = serProxy.convertSpeed(spd,SpeedUnit.milesPerhour,
            SpeedUnit.kilometersPerhour);

但我想管理第二和第三个参数,如下所示。

    double spd = 100;  
    SpeedUnit callTunit = "SpeedUnit."+toUnit;
    SpeedUnit callFunit = "SpeedUnit."+fromUnit;
    double res = serProxy.convertSpeed(spd,callFunit,
            callTunit);

我收到以下播放异常错误消息

"无法施放物品' SpeedUnit.kilometersPerhour'与class' java.lang.String' to class' NET.webserviceX.www.SpeedUnit' "

在SpeedUnit类中,这些对象的声明如下所示。

public class SpeedUnit implements java.io.Serializable {
private java.lang.String _value_;
private static java.util.HashMap _table_ = new java.util.HashMap();protected SpeedUnit(java.lang.String value) {
    _value_ = value;
    _table_.put(_value_,this);
}
public static final java.lang.String _milesPerhour = "milesPerhour";
public static final java.lang.String _kilometersPerhour = "kilometersPerhour";
public static final SpeedUnit milesPerhour = new SpeedUnit(_milesPerhour);
public static final SpeedUnit kilometersPerhour = new SpeedUnit(_kilometersPerhour);

非常感谢任何人的帮助。

谢谢, 马德汉

2 个答案:

答案 0 :(得分:1)

我认为您需要根据SpeedUnittoUnit的值传递fromUnit的新实例。我完全假设toUnitfromUnitString数据类型,因为你已经完成了连接。如果我的假设是正确的,您可以将代码更改为

SpeedUnit fromSUUnit = null;
SpeedUnit toSUUnit = null;
if(fromUnit !=null && fromUnit.equals("milesPerhour"))
fromSUUnit = SpeedUnit.milesPerhour;
if(toUnit !=null && toUnit.equals("kilometersPerhour"))
toSUUnit = SpeedUnit.kilometersPerhour;
double res = serProxy.convertSpeed(spd,fromSUUnit,toSUUnit);

希望这澄清。

免责声明:上述代码未经过测试。只是输入它来提供逻辑

答案 1 :(得分:0)

webservice包含字符串值,您正在向Web服务发送SpeedUnit对象。只需传递字符串值即可。 serProxy.convertSpeed(SPD,toUnit,             fromUnit);