簡體   English   中英

使用 cURL 和 Laravel 登錄soap API

[英]Logging into a soap API with cURL and Laravel

我在這方面遇到了一些麻煩。 我正在嘗試使用 SSL 登錄 Soap API 我已經生成了 .pem 文件並且可以通過執行以下操作來驗證它是否正常

curl -v --cert mycertfile.pem --pass mypassword https://someurl.com:9443/login/

下面給我HTTP/1.1 202 Accepted

現在,當我基本上嘗試使用以下內容在 laravel 控制器中執行相同的操作時,出現以下錯誤“curl 錯誤:錯誤:14094412:SSL 例程:ssl3_read_bytes:sslv3 警報錯誤證書”

這是我的控制器中的代碼

$apiKey = 'mypassword';
$file = File::get(storage_path('app/certs/mycertfile.pem'));
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://someurl:9443/login/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('AUTH-KEY: ' . $apiKey));
curl_setopt($ch, CURLOPT_SSLKEYPASSWD, 'mypassword');
curl_setopt($ch, CURLOPT_SSLKEYTYPE, 'PEM');
curl_setopt($ch, CURLOPT_SSLKEY, $file);
$rawBody = curl_exec($ch);
if($rawBody === false)
{
  $err = 'curl error: ' . curl_error($ch);
  curl_close($ch);
  echo $err;
  return $err;
}
else
{
  echo "response ==";
  echo $rawBody;
  echo "execu";
  curl_close($ch);
  return 'Operation completed without any errors';
}

任何想法為什么使用相同的密鑰、相同的計算機、URL 和 .pem 文件從命令行使用 curl 是可以的,而在 laravel 中使用 cURL 會出現此錯誤? 有趣的是,我確信這曾經有效,但后來升級到 PHP8 和我認為的其他一些東西。 也許這就是原因,但我看不到任何提及 PHP8 問題的內容。

經過一番研究,我能夠通過使用以下內容來完成上述工作。

$client = new \SoapClient('location of wsdl file.wsdl', array(
                    'local_cert' => 'mycertfile.pem',
                    'passphrase' => 'mypassword',
                    // 'location' => 'https://webserviceurl/login/' 
                )
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM