0

この PHP コードを使用して、基本認証で保護されていない wsdl ファイルにアクセスすると、非常にうまく機能します。

<?php
try{

    ini_set('soap.wsdl_cache_enabled', false);
    $url = 'https://webservicexx:10443/Service.asmx?WSDL';
    $wsdl = get_wsdl($url); 
    $client = new SoapClient($wsdl); 
    print_r($client);

} catch (SoapFault $e) {
        echo $e;

} 

function get_wsdl($url) { 
    clearstatcache();
    $cache_file = "/var/www/webservice2/soap.wsdl." . md5($url); 
    $ch = curl_init($url);
    $options = array(                           
                        CURLOPT_FOLLOWLOCATION=>true,
                        CURLOPT_FRESH_CONNECT=>true,
                        CURLOPT_RETURNTRANSFER=>true,
                        CURLOPT_SSL_VERIFYPEER=>false,
                        CURLOPT_USERAGENT=>"Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
    curl_setopt_array($ch, $options);
    $data = curl_exec($ch);
    curl_close($ch);
    file_put_contents($cache_file, $data);
    return $cache_file; 

} 
?>

そして、認証基本 (.NET) で保護された wsdl ファイルにアクセスしようとすると、$option 配列を変更してログインとパスを追加します。

$options = array( 
  CURLOPT_POST=>true,
  CURLOPT_HTTPAUTH=>CURLAUTH_BASIC,
  CURLOPT_USERPWD=>'myLOGIN:myPASSWORD',
  CURLOPT_FOLLOWLOCATION=>true,
  CURLOPT_FRESH_CONNECT=>true,
  CURLOPT_RETURNTRANSFER=>true,
  CURLOPT_SSL_VERIFYPEER=>false,
  CURLOPT_USERAGENT=>"Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");

ファイルの結果に問題があります。セキュリティで保護された wsdl ファイルを取得できません。サーバー上のファイルにページ エラーがあります。これは、認証の基本的なバリアと、$option 配列に追加したログインとパスが機能しないため、ファイルにアクセスできないことを意味します。

どうすればできますか?

4

1 に答える 1

0

にも設定CURLOPT_SSL_VERIFYHOSTしてみてくださいFALSE

于 2012-11-06T21:28:58.073 に答える