免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7423 | 回复: 9
打印 上一主题 下一主题

perl作为webservice客户端的问题?着急,请帮忙 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-24 10:06 |只看该作者 |倒序浏览
以下是perl作为webservice客户端的代码:服务器端是用java开发的

#!/usr/bin/perl

use SOAP::Lite;
use POSIX qw(strftime);
use Time::Local;

my $ef=localtime(time);
my $ret=SOAP::Lite
   -> uri('http://10.0.18.230:8080/AllCounterService/services/AllCounterService')
    -> proxy('http://10.0.18.230:8080/AllCounterService/services/AllCounterService')
    -> noticePickFile("txt",$ef,"10.0.21.26:8080:/forWK/catalina(2008-06-23).log@'maintain'@'maintain6789'",true)
    -> result;

noticePickFile()是调用的服务器端的方法,总报下面的错误。请问这是什么问题,着急,请帮忙!!

报的错误是:
INFO: Fault occurred!
java.text.ParseException: Format.parseObject(String) failed
        at java.text.Format.parseObject(Format.java:221)
        at org.codehaus.xfire.aegis.type.basic.DateTimeType.readObject(DateTimeType.java:39)
        at org.codehaus.xfire.aegis.AegisBindingProvider.readParameter(AegisBindingProvider.java:169)
        at org.codehaus.xfire.service.binding.AbstractBinding.read(AbstractBinding.java:206)
        at org.codehaus.xfire.service.binding.WrappedBinding.readMessage(WrappedBinding.java:51)
        at org.codehaus.xfire.soap.handler.SoapBodyHandler.invoke(SoapBodyHandler.java:42)
        at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
        at org.codehaus.xfire.transport.DefaultEndpoint.onReceive(DefaultEndpoint.java:64)
        at org.codehaus.xfire.transport.AbstractChannel.receive(AbstractChannel.java:3
        at org.codehaus.xfire.transport.http.XFireServletController.invoke(XFireServletController.java:304)
        at org.codehaus.xfire.transport.http.XFireServletController.doService(XFireServletController.java:129)
        at org.codehaus.xfire.transport.http.XFireServlet.doPost(XFireServlet.java:116)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:12
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Thread.java:595)

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2008-06-24 11:49 |只看该作者
my $boolean =SOAP::Data->type(boolean=>0)->value(0);
  my $system = SOAP::Data->type(string=>"aaa")->value("bbb");
  my $result= $server->getBySplnoAnalysis($system,$boolean);
注意看文档..用上面方式设定要传进去的type,

axis 1.4 的版本好像会检查型别...

看详细内容请用
use SOAP::Lite +debug;

use SOAP::Lite +trace;

[ 本帖最后由 apile 于 2008-6-24 11:55 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2008-06-25 11:24 |只看该作者

你好,能说的详细一些吗?

你好;
     就我上面的程序,应该怎样写呢,麻烦说一下,我安你说的改两个一下,还是有问题,本人比较愚笨,呵呵

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
4 [报告]
发表于 2008-06-25 14:12 |只看该作者
at org.codehaus.xfire.aegis.type.basic.DateTimeType.readObject(DateTimeType.java:39)
datetime object type有问题...用localtime取得的是string不是datetime...
你可能要搜寻一下...
SOAP::Data 这个对象..有没有 可以转成DateTime的 method, 上面示范的事boolean与String,
其他请你自己想办法...

论坛徽章:
0
5 [报告]
发表于 2008-06-25 15:19 |只看该作者

请再帮忙看一下!!

use warnings;
use SOAP::Lite+trace;
use POSIX qw(strftime);
use Time::Local;
#my $atime='20080601';
my $atime;

my $ef=localtime(time);
my $namespace = 'http://10.0.18.230:8080/AllCounterService/services';
my $url='http://10.0.18.230:8080/AllCounterService/services/AllCounterService?wsdl';
my $service = SOAP::Lite->service($url);

$service->autotype(0);

my $ac="true";
my $fileType="txt";
my $endTime=$ef;

my $filePath="10.0.21.26:8080:/forWK/catalina(2008-06-23).log\@'maintain'\@'maintain6789'";
my $flag="true";

my $aa=SOAP::Header->name('fileType')->value($fileType)->uri($namespace);
my $bb=SOAP::Header->name('endTime')->value($endTime)->uri($namespace);
my $cc=SOAP::Header->name('filePath')->value($filePath)->uri($namespace);
my $dd=SOAP::Header->name('Flag')->value($flag)->uri($namespace);

print "$aa\n$bb\n$cc\n$dd\n";
my $ee=$service->noticePickFile($aa,$bb,$cc,$dd);

现在又报这么一个错误:急呀!!!
org.codehaus.xfire.fault.XFireFault: Not enough message parts were received for the operation.
        at org.codehaus.xfire.service.binding.ServiceInvocationHandler.fillInHolders(ServiceInvocationHandler.java:23
        at org.codehaus.xfire.service.binding.ServiceInvocationHandler.invoke(ServiceInvocationHandler.java:73)
        at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
        at org.codehaus.xfire.transport.DefaultEndpoint.onReceive(DefaultEndpoint.java:64)
        at org.codehaus.xfire.transport.AbstractChannel.receive(AbstractChannel.java:3
        at org.codehaus.xfire.transport.http.XFireServletController.invoke(XFireServletController.java:304)
        at org.codehaus.xfire.transport.http.XFireServletController.doService(XFireServletController.java:129)
        at org.codehaus.xfire.transport.http.XFireServlet.doPost(XFireServlet.java:116)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:12
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Thread.java:595)

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
6 [报告]
发表于 2008-06-25 16:35 |只看该作者
请打开debug
use SOAP::Lite +debug;
看看到底SOAP传出去的是什麽..

论坛徽章:
0
7 [报告]
发表于 2008-06-25 16:44 |只看该作者

传的是这个东西,麻烦你给看一下,谢谢!!

<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlnssi="http://www.w
3.org/1999/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/e
ncoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlnssd="
http://www.w3.org/1999/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap
.org/soap/encoding/"><SOAP-ENV:Header><namesp1:endTime xmlns:namesp1="http://10.
0.18.230:8080/AllCounterService/services">Wed Jun 25 16:23:08 2008</namesp1:endT
ime><namesp2:filePath xmlns:namesp2="http://10.0.18.230:8080/AllCounterService/s
ervices">10.0.21.26:8080:/forWK/catalina(2008-06-23).log@'maintain'@'maintain678
9'</namesp2:filePath><namesp3:Flag xmlns:namesp3="http://10.0.18.230:8080/AllCou
nterService/services">true</namesp3:Flag></SOAP-ENV:Header><SOAP-ENV:Body><notic
ePickFile xmlns=""><namesp4:fileType xmlns:namesp4="http://10.0.18.230:8080/AllC
ounterService/services">txt</namesp4:fileType></noticePickFile></SOAP-ENV:Body><
/SOAP-ENV:Envelope>

论坛徽章:
0
8 [报告]
发表于 2008-06-25 16:48 |只看该作者

你好,你能留个msn号吗?能和你交流一下吗,谢谢

你好,你能留个msn号吗?能和你交流一下吗,谢谢

我的号是:bingo821220@hotmail.com

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
9 [报告]
发表于 2008-06-25 16:57 |只看该作者
准备下班了...
如果方便的话提供一下, WSDL内容.....
你一开始的方式没错...
只需要改DateTime那个Object...就可以正确使用..
後来的这个方式不大对..把简单的问题复杂了...

论坛徽章:
0
10 [报告]
发表于 2008-06-25 17:05 |只看该作者

好的,我上传一个wsdl,你看看一下,谢谢

你好:
    麻烦你看一下

1.rar

1.01 KB, 下载次数: 70

压缩包是wsdl

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP