<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的庫,在一行代碼未變的情況下,只要使用最新的庫??磥碓谧钚聨炖锝鉀Q了數(shù)組問題:
    2.1-incubator-SNAPSHOT
    就沒問題,如果是用:
    2.0-incubator
    就會出現(xiàn)上篇文章的情況。我使用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中定義一致。
    實驗發(fā)現(xiàn),帶不帶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 我愛佳娃 閱讀(1445) 評論(1)  編輯  收藏 所屬分類: Perlweb技術(shù)

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

    http://cwiki.apache.org/CXF/download.html  回復  更多評論
      
    主站蜘蛛池模板: 久久久亚洲欧洲日产国码二区| 国产成人精品日本亚洲专区61| 亚洲w码欧洲s码免费| 老汉精品免费AV在线播放| 久久久久亚洲AV成人无码网站| 无码日韩精品一区二区免费暖暖 | 亚洲情侣偷拍精品| 四虎影视在线看免费观看| 亚洲精品无码av天堂| 一二三区免费视频 | 亚洲第一中文字幕| 91av免费观看| 亚洲 欧洲 自拍 另类 校园| 成人免费网站在线观看| 国产精品亚洲色图| 亚洲中文字幕日产乱码高清app| 岛国岛国免费V片在线观看 | 亚洲午夜一区二区三区| 免费毛片在线视频| 人与动性xxxxx免费| 亚洲国产成人片在线观看 | 一区二区三区观看免费中文视频在线播放 | 亚洲制服丝袜在线播放| 在线免费一区二区| 草久免费在线观看网站| 精品国产亚洲一区二区三区| 99视频免费播放| 亚洲小说图区综合在线| 亚洲综合精品网站| 91在线手机精品免费观看| 亚洲国产精品99久久久久久| 久久精品国产精品亚洲人人| 69pao强力打造免费高清| 亚洲成a∨人片在无码2023| 亚洲一区精品无码| 国产va免费精品观看精品| 日本中文字幕免费看| 亚洲综合久久成人69| 全部免费毛片在线| 222www在线观看免费| 黄色a三级免费看|