我试图从Zend客户端发出一个远程Windows 2008服务器R2上的API请求,每次尝试执行此操作时,都会收到以下错误:
信息:
无法在TCP连接wvm024.dei.isep.ipp.pt上启用加密
和:
以前的例外:
ErrorException
文件:
C:\ Program Files(x86)\ Zend \ ZendServer \ data \ apps \ http__default __ \ 0 \ TukPorto \ 1.0.0_118 \ TukPorto \ vendor \ zendframework \ zendframework \ library \ Zend \ Http \ Client \ Adapter \ Socket.php:281
信息:
stream_socket_enable_crypto():对等证书CN = wvm024.wvdom024.dei.isep.ipp.pt' did not match expected CN=
wvm024.dei.isep.ipp.pt'
我的代码如下:
$username = WebApiServices::$username;
$password = WebApiServices::$password;
$enderecoBase = WebApiServices::$enderecoBase;
$httpClientOptions = array(
'adapter' => 'Zend\Http\Client\Adapter\Socket',
'persistent'=>false,
'sslverifypeer' => false,
'sslallowselfsigned' => true,
'sslusecontext'=>true,
'ssl' => array(
'verify_peer' => false,
'allow_self_signed' => true,
'capture_peer_cert' => true,
),
'useragent' => 'Feed Reader',
);
$client = new Client($enderecoBase . '/Token');
$client->setOptions($httpClientOptions);
$client->setMethod(Request::METHOD_POST);
$data = "grant_type=password&username=$username&password=$password";
$len = strlen($data);
$client->setHeaders(array(
'Content-Type' => 'application/x-www-form-urlencoded',
'Content-Length' => $len
));
$client->setOptions([
'sslverifypeer' => false,
]);
$client->setRawBody($data);
$response = $client->send();
$body = Json::decode($response->getBody());
if (! empty($body->access_token)) {
if (! isset($_SESSION)) {
session_start();
}
$_SESSION['access_token'] = $body->access_token;
$_SESSION['username'] = $username;
return true;
} else
return false;
最佳答案
可以使用CURL适配器,例如在ZF1中:
<?php
$config = array(
'adapter' => 'Zend_Http_Client_Adapter_Curl',
'curloptions' => array(CURLOPT_SSL_VERIFYPEER => false),
);
$client = new Zend_Http_Client($url, $config);
$result = $client->request('GET');