<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  回復  更多評論
      
    主站蜘蛛池模板: 最近免费2019中文字幕大全| MM1313亚洲精品无码久久| 亚洲成AV人片天堂网无码| 久久精品国产亚洲5555| 亚洲精品美女久久久久99小说| 吃奶摸下高潮60分钟免费视频| 免费人成在线观看网站视频| 俄罗斯极品美女毛片免费播放| 亚洲精品成人久久久| 久久精品国产精品亚洲下载| 国产91精品一区二区麻豆亚洲| 最新亚洲成av人免费看| 亚洲老妈激情一区二区三区| 亚洲Av无码精品色午夜| 久久精品国产亚洲av影院| 亚洲国产精品网站久久| 亚洲中文无码永久免| 国产精品亚洲片在线花蝴蝶| 一级毛片正片免费视频手机看| 皇色在线免费视频| 久9这里精品免费视频| 亚洲综合免费视频| 免费鲁丝片一级观看| 亚洲精品国产电影| 亚洲春色在线视频| 亚洲精品在线不卡| 亚洲AV无码国产一区二区三区| 五月天国产成人AV免费观看| 成人黄网站片免费视频| 999在线视频精品免费播放观看| 在线免费观看视频你懂的| 亚洲综合最新无码专区| 亚洲国产精品久久久久久| 亚洲18在线天美| 四虎精品成人免费视频| 日韩免费无码一区二区三区 | 国产精品手机在线亚洲| 成人自慰女黄网站免费大全| 最近免费字幕中文大全视频 | 国产色无码精品视频免费| 四虎在线最新永久免费|