<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  回復  更多評論
      
    主站蜘蛛池模板: 亚洲熟妇自偷自拍另欧美| 亚洲第一页中文字幕| 国产综合激情在线亚洲第一页| 女人张开腿等男人桶免费视频| 亚洲一区中文字幕在线观看| 国产免费一区二区三区| 亚洲经典在线中文字幕| 91精品啪在线观看国产线免费| 亚洲精品第一国产综合精品| 91免费国产自产地址入| 最新亚洲卡一卡二卡三新区| 日韩a在线观看免费观看| 曰批全过程免费视频观看免费软件 | 亚洲av无码专区亚洲av不卡| 国产在线98福利播放视频免费| 无码亚洲成a人在线观看| 亚洲AV无码一区二区三区国产| 国产精品九九久久免费视频 | 可以免费观看一级毛片黄a| 国产成人无码精品久久久免费| 国产性爱在线观看亚洲黄色一级片 | 亚洲丶国产丶欧美一区二区三区| 韩国免费三片在线视频| 五级黄18以上免费看| 久久伊人久久亚洲综合| 91免费精品国自产拍在线不卡| 蜜臀亚洲AV无码精品国产午夜.| 国产成人亚洲影院在线观看| 日本免费人成视频在线观看| 亚洲日韩精品国产3区| 亚洲AV日韩精品一区二区三区| 免费看黄的成人APP| 亚洲成a人片在线看| 亚洲精品一级无码鲁丝片| 日本免费在线中文字幕| 亚洲中文字幕一二三四区苍井空| 免费国产一级特黄久久| 一级毛片成人免费看免费不卡| 亚洲综合国产成人丁香五月激情| 在线观看国产区亚洲一区成人 | 免费一级毛片在线播放放视频|