php - 使用 cURL 和 Laravel 登录到一个肥皂 API
问题描述
我遇到了一些麻烦。我正在尝试使用 SSL 登录 Soap API 我已经生成了 .pem 文件,并且可以通过执行以下操作来验证它是否良好
curl -v --cert mycertfile.pem --pass mypassword https://someurl.com:9443/login/
以下给我HTTP/1.1 202 Accepted
现在,当我基本上尝试在 laravel 控制器中使用以下内容做同样的事情时,我收到以下错误“curl error: error:14094412:SSL routines:ssl3_read_bytes:sslv3 alert bad certificate”
这是我的控制器中的代码
$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/'
)
);
推荐阅读
- html - 背景图像过渡在 CSS 中不起作用
- laravel - Laravel CORS 问题中的 XMLHttpRequest POST
- php - 如何将第二个字段名称放入 codeigniter 3 表单验证的大于规则
- vba - 在多个条件Word VBA中检索段落文本
- controller - QEMU:如何将 SD 卡连接到特定控制器?
- postgresql - PostgreSQL 数据库大小不等于所有表大小的总和
- python - SQLAlchemy create_engine 在谷歌云函数中不起作用
- ios - iOS 模拟器:获取相同页面截图 已编辑
- java - Java spark无法从spark sql中的本地文件系统加载文件
- ios - 如何访问科尔多瓦 WKWebview ios 应用程序的 iframe 中的元素?