perl發送SOAP請求

來源:互聯網
上載者:User

標籤:http   io   os   ar   使用   for   sp   div   on   

項目中的需要發送SOAP訊息來進行一些操作。由於SOAP協議是構建在HTTP協議之上的,因此通過發送HTTP請求也可以解決此問題。此外,項目中還需要考慮對SSL協議的支援。 方法一:利用SOAP::Lite(perl的第三方庫)來實現     use SOAP::Lite;     my $proxy=‘http://host:port/.../...?wsdl‘;     my $soap=SOAP::Lite->proxy($proxy)->ns(‘...‘);     my $response=$soap->call(‘...‘);      由於不想引入第三方的庫,後面就沒有使用此方式。 方法二:利用LWP來實現     use HTTP::Headers;     use HTTP::Request;
     use LWP::UserAgent;     my $server = ‘...‘;
     #get soap request format     my $content = ‘...‘ ;     #set http header
     my $head=HTTP::Headers->new();
     $head->content_type(‘text/xml;charset=UTF-8‘);     #set http request and send it
     my $request = HTTP::Request->new(POST,$server, $head );
     $request->protocol(‘HTTP/1.0‘);
     $request->content($content);
     my $userAgent = LWP::UserAgent->new();
     my $response  = $userAgent ->request($request);      由於LWP是perl內建的庫,不存在使用第三方庫的問題。但如果要支援SSL協議的,還是需要引入IO::Socket::SSL,Net::SSL等第三方庫 方法三:利用curl命令來實現     my $httpUrl = $ARGV[0];     my $result = "";     my $content = ‘...‘ ;     if($httpUrl =~ /^https/){     my $certDir = $ARGV[1];          $result = `curl -k --silent --cacert $certDir/***.pem --cert $certDir/***.pem ‘$httpUrl‘ -d ‘$content‘`;     }else{          $result = `curl  --silent ‘$httpUrl‘ -d ‘$content‘`;     }     此種方法依賴於curl命令,帶對SSL的支援比較好,實現也簡單。    

perl發送SOAP請求

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.