怎么才能把内容加上xsd:string这样的类型??200分 help 谢谢~~~~~~~~~~~~~~~~~~`` http://community.csdn.net/Expert/topic/3222/3222118.xml?temp=.9576837 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼主,你已经走进了误区。这样用Web Service你会很累的。 直接用jax-rpc方式吧。给定参数和类型用Call去触发。 我建议你使用Apache的Axis 它的例子比JWSDP更全面和详细。 谢谢~ 那有人用过saaj吗?。遇到过我这问题么这么多分 up 有分! 如果你硬是要这样手工写,可以直接后面接一个 SOAPElement.addAttribute(...外面的那个大标签可以用SOAPBody.addBodyElement(...Web Service的大多数工具都已经很方便使用的了。不需要这样一砖一瓦的操作。你说的情形是典型的RPC的应用场合。所以建议不要用上面的方式,这样你以后的扩展和维护都会很麻烦 急 你那有Axis 接受和发送的 soap message的例子么,,我只需要收发消息 不用调用方法如果可以 请加我qq:28367856我下axis的包了,,好象没找到 发message的demo啊 谢谢~~ 在Axis的samples/message下面有详细的例子。如果你采用message方式,那么是不需要写xsi:type=xsd:string这些东西了的。因为这个xml信息包括数据类型是双方事先约定好了。没必要再声明。(如果你硬要手工写进去也可以)如果使用RPC方式则需要声明这些以便SDK解析,但声明的方式有更高层的方式比如 XMLType.XSD_STRING,之后都是有SDK自动处理了。 <?xml version="1.0" encoding="UTF-8" standalone="no" ?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="urn:ICQServer" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><SOAP-ENV:Body><mns:icqRegister xmlns:mns="urn:ICQServer" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><params xsi:type="tns:RegistrationObject"><password xsi:type="xsd:string">test</password> <email xsi:type="xsd:string">[email protected]</email> <nick xsi:type="xsd:string">test name</nick> <id xsi:type="xsd:string">some_id</id> <ip xsi:type="xsd:string">1.1.1.1</ip> </params></mns:icqRegister></SOAP-ENV:Body></SOAP-ENV:Envelope>那个demo配置好了 可我想要<SOAP-ENV:Body> 可这个输出是<soapenv:Body>我的server也能接受到消息了 但我想输出上面的格式 9号公路你以前写过,能不能大概帮我写几句啊,,我们马上就要用了 行么~~ 非常感谢 这对你来说不是很难吧 :) 我也改用Axis 上面的东东写死就行 :p 你是第N个提出要用SOAP-ENV了,不明白,这个soapEnv就长得那么难看么。如果实在难看你可以不看它好了。你在服务端的任何语言的任何SOAP SDK都认它的。不会出现任何解析问题。除非你在服务端用纯手工的方式解析这个SOAP包并且写死了这个标签名必须是SOAP-ENV否则你真的没必要动它。SOAP的外壳都是由两头的SDK去处理的,你没必要关心它,对于你来说只有中间的内容才是你所关心的。 哦 如果都能兼容就可以了,,兄弟你axis熟的话就帮我把中间重要的那部分写了吧,,:~~~~~~~~~~~~~~~我也就能接帖了~~ 写什么啊,中间部分不需要写啊,就是你自己的的xml信息内容啊。直接当成 Element 传过去就万事大吉了。 我不能读xml 我是没次通过用户提交 的信息来发出soap,所以都不一样不能写在xml文件里,,:) 如果你不是现成的xml信息,那么你应该使用RPC方式,写一个ValueObject封装这些参数,然后传入这个ValueObject即可,就象你平常调用函数一样,至于中间的解析过程你不用关心。假如你的这个接口方法叫做public String register(RegisterObject ro)那么调用方法如下:...Call call = (Call) new Service().createCall();call.setTargetEndpointAddress(new URL(url));//注册对象QName ro = new QName(uri, "RegistrationObject");call.registerTypeMapping(RegisterObject.class, ro, new BeanSerializerFactory(RegisterObject.class, ro), new BeanDeserializerFactory(RegisterObject.class, ro));call.setOperationName(new QName(uri, "register"));call.addParameter("ro", ro, ParameterMode.IN);call.setReturnType(XMLType.XSD_STRING);String s = (String) call.invoke(new Object[] { rObject }); //call server其中rObject是你填好数据的RegistrationObject的一个实例。处理过程中间它会自己加上xsi:type="xsd:string"一类东东的,你不用管。 ok,怎么感觉比saaj复杂啊,还得自己定义RegisterObject这个类么? 我们给icq发一个soap 他们给我们返回一个soap我们用什么地址发的 他们就把soap发回这个地址,,能不能qq add me啊?? jpos包中关于字符编码的问题 struts2 上传文件得到的是.tmp 怎么得到原有文件名 为甚麽 html网页发送到TestSql?MyFilm 接收不到MyFilm呢 两种发布模式不一样啊? 求ERP案例 你们说使用SSH到底是为了快速开发,还是为了标准? hql和Criteria的效率哪个高? 不明白的菜问题 在hibernate查询语句参数中如果有中文,就有错误 请教一个resin配置的问题 struts中的struts-form.tld怎么找不到a !! 请问这个是什么错误?
直接用jax-rpc方式吧。给定参数和类型用Call去触发。
我建议你使用Apache的Axis
它的例子比JWSDP更全面和详细。
SOAPElement.addAttribute(...
外面的那个大标签可以用
SOAPBody.addBodyElement(...Web Service的大多数工具都已经很方便使用的了。不需要这样一砖一瓦的操作。
你说的情形是典型的RPC的应用场合。
所以建议不要用上面的方式,这样你以后的扩展和维护都会很麻烦
如果可以 请加我qq:28367856我下axis的包了,,好象没找到 发message的demo啊 谢谢~~
因为这个xml信息包括数据类型是双方事先约定好了。没必要再声明。
(如果你硬要手工写进去也可以)
如果使用RPC方式则需要声明这些以便SDK解析,但声明的方式有更高层的方式
比如 XMLType.XSD_STRING,之后都是有SDK自动处理了。
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="urn:ICQServer" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<mns:icqRegister xmlns:mns="urn:ICQServer" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<params xsi:type="tns:RegistrationObject">
<password xsi:type="xsd:string">test</password>
<email xsi:type="xsd:string">[email protected]</email>
<nick xsi:type="xsd:string">test name</nick>
<id xsi:type="xsd:string">some_id</id>
<ip xsi:type="xsd:string">1.1.1.1</ip>
</params>
</mns:icqRegister>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
那个demo配置好了 可我想要<SOAP-ENV:Body> 可这个输出是<soapenv:Body>
我的server也能接受到消息了 但我想输出上面的格式 9号公路你以前写过,能不能大概帮我写几句啊,,我们马上就要用了 行么~~ 非常感谢 这对你来说不是很难吧 :) 我也改用Axis 上面的东东写死就行 :p
这个soapEnv就长得那么难看么。如果实在难看你可以不看它好了。
你在服务端的任何语言的任何SOAP SDK都认它的。不会出现任何解析问题。
除非你在服务端用纯手工的方式解析这个SOAP包并且写死了这个标签名必须是SOAP-ENV
否则你真的没必要动它。
SOAP的外壳都是由两头的SDK去处理的,你没必要关心它,
对于你来说只有中间的内容才是你所关心的。
兄弟你axis熟的话就帮我把中间重要的那部分写了吧,,:~~~~~~~~~~~~~~~
我也就能接帖了~~
直接当成 Element 传过去就万事大吉了。
不能写在xml文件里,,:)
写一个ValueObject封装这些参数,
然后传入这个ValueObject即可,就象你平常调用函数一样,
至于中间的解析过程你不用关心。假如你的这个接口方法叫做
public String register(RegisterObject ro)
那么调用方法如下:...
Call call = (Call) new Service().createCall();
call.setTargetEndpointAddress(new URL(url));
//注册对象
QName ro = new QName(uri, "RegistrationObject");
call.registerTypeMapping(RegisterObject.class, ro,
new BeanSerializerFactory(RegisterObject.class, ro),
new BeanDeserializerFactory(RegisterObject.class, ro));call.setOperationName(new QName(uri, "register"));
call.addParameter("ro", ro, ParameterMode.IN);
call.setReturnType(XMLType.XSD_STRING);
String s = (String) call.invoke(new Object[] { rObject }); //call server其中rObject是你填好数据的RegistrationObject的一个实例。
处理过程中间它会自己加上xsi:type="xsd:string"一类东东的,你不用管。
我们用什么地址发的 他们就把soap发回这个地址,,能不能qq add me啊??