<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-124  評論-194  文章-0  trackbacks-0
    上一篇文章中的問題,今天又再試了下,居然解決了,看來把遇到問題放一放是有好處的。

    第一,是要用對CXF的庫,在一行代碼未變的情況下,只要使用最新的庫。看來在最新庫里解決了數組問題:
    2.1-incubator-SNAPSHOT
    就沒問題,如果是用:
    2.0-incubator
    就會出現上篇文章的情況。我使用MAVEN2,就寫成:
          <!--for cxf-->
        
    <dependency>
            
    <groupId>org.apache.cxf</groupId>
            
    <artifactId>cxf-rt-frontend-jaxws</artifactId>
            
    <version>2.1-incubator-SNAPSHOT</version>
            
    <!-- version>2.0-incubator</version-->
        
    </dependency>
        
    <dependency>
            
    <groupId>org.apache.cxf</groupId>
            
    <artifactId>cxf-rt-transports-http</artifactId>
            
    <version>2.1-incubator-SNAPSHOT</version>
        
    </dependency>
        
    <dependency>
            
    <groupId>org.apache.cxf</groupId>
            
    <artifactId>cxf-rt-databinding-aegis</artifactId>
            
    <version>2.1-incubator-SNAPSHOT</version>
        
    </dependency>


    第二,對SOAP::Lite的改變,SOAP::Lite不支持doc/literal,但通過閱讀
    "NET-based Web Service Using the SOAP::Lite Perl Library".
    我的上篇文章有鏈接,我寫的PERL程序在某些情況下依然不行。
    這次再加了兩處改動后就可以了:(注意:CXF里不要使用aegisDatabinding,用默認的即可)
    my $soap = SOAP::Lite
           
    -> uri('http://magic.nms.exchangebit.com/')
           
    -> on_action( subjoin '/', 'http://www.alfredbr.com', $_[1] })
           
    -> proxy('http://127.0.0.1:8080/ebnms/NotifyService')
               
    ->autotype(0);


    其中的autotype(0)非常重要。另外一處改動是,程序中的根變量名改成"arg0",即與WSDL中定義一致。
    實驗發現,帶不帶attr中的xmlns都可以。完整代碼如下:
     use SOAP::Lite ( +trace => all, maptype => {} );

    my $soap = SOAP::Lite
           
    -> uri('http://magic.nms.exchangebit.com/')
           
    -> on_action( subjoin '/', 'http://www.alfredbr.com', $_[1] })
           
    -> proxy('http://127.0.0.1:8080/ebnms/NotifyService')
               
    ->autotype(0);

    #$soap->sendAlarmString ("good");

    #$soap->sendAlarm (SOAP::Data->name(arg0=>{devName=>"hehe", devIp=>"ip1"}));


    {
    # call send alarm
        my @params = (
        
    #   $header,
           SOAP::Data->name(arg0 => goodhehe) 
        );
        
        
    my $method = SOAP::Data->name('ns1:sendAlarmString')
           
    ->attr({"xmlns:ns1" => 'http://magic.nms.exchangebit.com/'});
        
        
    my $result = $soap->call($method => @params);
        
        
    print "\nsend string alarm result:\n";
        
    if ($result->fault)
        {
           
    print $result->faultstring;
        }
        
    else
        {
           
    print $result->result;
        }
        
    print "\nn";
    }

    {
    # call send dev alarm
        my @params = (SOAP::Data->name(arg0=>{devName=>"hehe", devIp=>"ip1"}));
        
        
    my $method = SOAP::Data->name('sendAlarm');
    #       ->attr({"xmlns:ns1" => 'http://magic.nms.exchangebit.com/'});
        
        
    my $result = $soap->call($method => @params);
        
        
    print "\nsend string alarm result:\n";
        
    if ($result->fault)
        {
           
    print $result->faultstring;
        }
        
    else
        {
           
    print $result->result;
        }
        
    print "\n\n";
    }

    {
    # call send arr alarm
        my @params = (
           SOAP
    ::Data->name(arg0 => [
           {devName
    =>"hehe1", devIp=>"ip1"}, 
           {devName
    =>"hehe1", devIp=>"ip1"}, 
           {devName
    =>"hehe1", devIp=>"ip1"}, 
           {devName
    =>"hehe1", devIp=>"ip1"}, 
           {devName
    =>"hehe1", devIp=>"ip1"}, 
           {devName
    =>"hehe1", devIp=>"ip1"}, 
           {devName
    =>"hehe1", devIp=>"ip1"}, 
           {devName
    =>"hehe1", devIp=>"ip1"}, 
           {devName
    =>"hehe1", devIp=>"ip1"}, 
           {devName
    =>"hehe1", devIp=>"ip1"}, 
           {devName
    =>"hehe2", devIp=>"ip2"}])
        );
        
        
    my $method = SOAP::Data->name('sendAlarmArr');
        
        
    my $result = $soap->call($method => @params);
        
        
    print "\nsend string alarm result:\n";
        
    if ($result->fault)
        {
           
    print $result->faultstring;
        }
        
    else
        {
           
    my @a = @{$result->result->{item}};
           
    foreach $i (@a) {
                   
    print "ele: $i->{devName}, $i->{devIp}\n";
           }
        }
        
    print "\n\n";
    }
    posted on 2007-08-23 14:13 我愛佳娃 閱讀(1437) 評論(1)  編輯  收藏 所屬分類: Perlweb技術

    評論:
    # re: CXF:咋總差一點呢? (續:已解決) 2007-09-04 11:05 | willem
    CXF2.0.1 修復很多 CXF 2.0 的bug,在過一兩個禮拜 CXF2.0.2就要Release了。到時你可以下下來試一下。

    http://cwiki.apache.org/CXF/download.html  回復  更多評論
      
    主站蜘蛛池模板: 久久久久se色偷偷亚洲精品av| 亚洲天天在线日亚洲洲精| 成人区精品一区二区不卡亚洲| 中文字幕天天躁日日躁狠狠躁免费| 亚洲国产精品一区二区成人片国内| 亚欧洲精品在线视频免费观看 | 亚洲AV无码一区二区三区国产 | 精品国产亚洲第一区二区三区| 在线观看免费污视频| 亚洲国产综合AV在线观看| 免费鲁丝片一级观看| 免费亚洲视频在线观看| 亚洲国产一区二区视频网站| 9久热精品免费观看视频| 亚洲国产a∨无码中文777| 无码精品国产一区二区三区免费| 亚洲的天堂av无码| 女性自慰aⅴ片高清免费| 成人福利在线观看免费视频| 久久精品国产亚洲5555| 日韩内射激情视频在线播放免费| 国产成人亚洲精品| 免费观看午夜在线欧差毛片| a级在线免费观看| 亚洲av永久综合在线观看尤物| 日韩视频在线免费观看| 中国一级全黄的免费观看| 亚洲福利一区二区三区| 成人黄软件网18免费下载成人黄18免费视频 | 一道本在线免费视频| 亚洲精品在线观看视频| 免费看的黄色大片| aaa毛片免费观看| 亚洲jizzjizz在线播放久| 亚洲高清免费视频| h视频在线免费看| 美女又黄又免费的视频| 久久亚洲精品中文字幕| 免费永久国产在线视频| 99在线免费观看视频| 无人视频免费观看免费视频 |