使用axis1.4开发web service,客户端调用时类型转换出错问题求解
axis版本1.4,jdk1.5,使用axis自带的例子,
service代码如下:
server-configxml配置如下:
以下是客户端代码:
执行结果:
obj=4.0
===returnValue=4.0
Exception in thread "main" java.lang.ClassCastException: java.lang.String
at samples.math.MathClient.main(MathClient.java:32)
问题:
service代码里面add方法的返回值是float型的,在
server-config.xml里面也配置成了float型;在客户端取到了obj正确输出,将obj用string进行类型转换没问题,但是用Float转换错误,可见返回值是string类型,不知道为什么会与service的返回类型不符?
service代码如下:
public class Math {
public float add(float a, float b) {
return a+b;
}
}
server-configxml配置如下:
<service name="Math" provider="java:RPC" style="wrapped" use="literal">
<operation name="add" qname="ns1:Add" returnQName="ns1:AddResult" returnType="xsd:float" soapAction="" xmlns:ns1="http://math.samples/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<parameter qname="ns1:A" type="xsd:float"/>
<parameter qname="ns1:B" type="xsd:float"/>
</operation>
<parameter name="allowedMethods" value="add"/>
<parameter name="className" value="samples.math.Math"/>
<parameter name="wsdlTargetNamespace" value="http://math.samples/"/>
</service>
以下是客户端代码:
public class MathClient {
/**
* @param args
*/
public static void main(String[] args) {
String url = "http://localhost:8080/axis/services/Math";
Service svc = new Service();
try {
Call call = (Call) svc.createCall();
call.setTargetEndpointAddress(url);
call.setOperationName(new QName(url, "add"));
Object obj = call.invoke(new Object[] {
new Float(3.0), new Float(1.0) });
System.out.println("obj="+obj);
if(obj instanceof Float) {
System.out.println((Float)obj);
}
String returnValue = (String) obj;//可以转换
System.out.println("===returnValue=" + returnValue);
Float returnValue2 = (Float) obj;//类型转换错误
System.out.println("===returnValue2=" + returnValue2);
} catch (ServiceException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
}
}
}
执行结果:
obj=4.0
===returnValue=4.0
Exception in thread "main" java.lang.ClassCastException: java.lang.String
at samples.math.MathClient.main(MathClient.java:32)
问题:
service代码里面add方法的返回值是float型的,在
server-config.xml里面也配置成了float型;在客户端取到了obj正确输出,将obj用string进行类型转换没问题,但是用Float转换错误,可见返回值是string类型,不知道为什么会与service的返回类型不符?
...全文
相关推荐
使用Eclipse的Axis1.4插件开发Web Service及客户端
【使用Eclipse的Axis1.4插件开发Web Service及客户端】在Eclipse JEE 3.3版本中,开发Web Service和客户端程序变得相对简单,因为该版本已经集成了Axis1.4
基于Axis的Web Service客户端调用
Axis作为客户端,可以解析WSDL文档,生成Java客户端 stubs,使得开发者能够轻松地调用Web Service。
axis1实现webservice 及客户端调用方法 实现
总之,使用Axis1实现Web服务和客户端调用是一个涉及多个步骤的过程,包括编写业务逻辑、生成WSDL、部署服务以及创建和调用客户端stub。
eclipse 生成 Axis2 Web Service 客户端
### Eclipse 生成 Axis2 Web Service 客户端#### 一、概述本文将详细介绍如何在Eclipse开发环境中创建基于Axis2的Web Service客户端。
用axis2开发web service
以下是关于使用Axis2开发Web Service的详细步骤和知识点:1. **实验环境搭建**: - 首先确保安装了JDK 1.6,因为 Axis2需要Java运行环境。


