我正在尝试使用Web服务[http://www.webservicex.net/ConvertSpeed.asmx?WSDL]
并在其中调用一个方法。
它只有一种称为SpeedUnit的方法,并尝试与自定义参数一起使用。
只有当我给出以下代码时,它才有效
double res = serProxy.convertSpeed(spd,SpeedUnit.milesPerhour,
SpeedUnit.kilometersPerhour);
但是我想像下面那样管理2nd和3rd参数。
double spd = 100;
SpeedUnit callTunit = "SpeedUnit."+toUnit;
SpeedUnit callFunit = "SpeedUnit."+fromUnit;
double res = serProxy.convertSpeed(spd,callFunit,
callTunit);
我得到以下强制转换异常错误消息
“无法将类为'java.lang.String'的对象'SpeedUnit.kilometersPerhour'转换为类'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);
非常感谢任何人的帮助。
谢谢,
马丹
最佳答案
我认为您需要根据SpeedUnit
和toUnit
的值传递fromUnit
的新实例。我完全假定toUnit
和fromUnit
是String
数据类型,因为您已完成串联。如果我的假设正确,则可以将代码更改为
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);
希望这可以澄清。
免责声明:上面的代码未经测试。只是输入它来提供逻辑