この 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 配列に追加したログインとパスが機能しないため、ファイルにアクセスできないことを意味します。
どうすればできますか?