api — SOAP не удалось подключиться к переполнению стека хоста

Я пытаюсь подключиться к UPS API для получения информации, но не могу заставить ее работать. Я использую этот код:

  //die(phpinfo());
//Configuration
$access = "ACCESS NUMBER";
$userid = "USERNAME";
$passwd = "PASSWORD";
$wsdl = "wsdl/Track.wsdl"; //wsdl path
$operation = "ProcessTrack";
$endpointurl = 'https://wwwcie.ups.com/webservices/Track'; //https://onlinetools.ups.com/ups.app/xml/Track or https://wwwcie.ups.com/webservices/Track
$outputFileName = "XOLTResult.xml";

function processTrack()
{
//create soap request
$req['RequestOption'] = '15';
$tref['CustomerContext'] = 'Add description here';
$req['TransactionReference'] = $tref;
$request['Request'] = $req;
$request['InquiryNumber'] = TRACKING NUMBER;
$request['TrackingOption'] = '02';

//echo "Request.......\n";
print_r($request);
//echo "\n\n";
return $request;
}

try
{
$mode = array
(
'soap_version' => 'SOAP_1_1',  // use soap 1.1 client
'trace' => 1
);

// initialize soap client
$client = new SoapClient($wsdl , $mode);

//set endpoint url
$client->__setLocation($endpointurl);//create soap header
$usernameToken['Username'] = $userid;
$usernameToken['Password'] = $passwd;
$serviceAccessLicense['AccessLicenseNumber'] = $access;
$upss['UsernameToken'] = $usernameToken;
$upss['ServiceAccessToken'] = $serviceAccessLicense;

$header = new SoapHeader('http://www.ups.com/XMLSchema/XOLTWS/UPSS/v1.0','UPSSecurity',$upss);
$client->__setSoapHeaders($header);//get response
$resp = $client->__soapCall($operation ,array(processTrack()));

//get status
//echo "Response Status: " . $resp->Response->ResponseStatus->Description ."\n";

//save soap request and response to file
$fw = fopen($outputFileName , 'w');
fwrite($fw , "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n" . $client->__getLastResponse() . "\n");
fclose($fw);
//echo "<br> Request:<br>";
//print_r("<?xml version=\"1.0\" encoding=\"UTF-8\" \n" . $client->__getLastResponse() . "\n");
header('Content-type: text/xml');
echo $client->__getLastResponse();
}
catch(Exception $ex)
{
print_r($ex);
/*
header('Content-type: text/xml');
echo "<xml>Error</xml>";
*/
}

Я получаю ошибку:

Array ( [Request] => Array ( [RequestOption] => 15 [TransactionReference] => Array ( [CustomerContext] => Add description here ) ) [InquiryNumber] => [TRACKING NUMBER] [TrackingOption] => 02 ) SoapFault Object ( [message:protected] => Could not connect to host [string:Exception:private] => [code:protected] => 0 [file:protected] => /Applications/XAMPP/xamppfiles/htdocs/kestrak/php/ups.php [line:protected] => 58 [trace:Exception:private] => Array ( [0] => Array ( [function] => __doRequest [class] => SoapClient [type] => -> [args] => Array ( [0] => [CREDENTIALS]Add description here[TRACKING NUMBER] [1] => https://wwwcie.ups.com/webservices/Track [2] => http://onlinetools.ups.com/webservices/TrackBinding/v2.0 [3] => 1 [4] => 0 ) ) [1] => Array ( [file] => /Applications/XAMPP/xamppfiles/[DIRECTORY] [line] => 58 [function] => __soapCall [class] => SoapClient [type] => -> [args] => Array ( [0] => ProcessTrack [1] => Array ( [0] => Array ( [Request] => Array ( [RequestOption] => 15 [TransactionReference] => Array ( [CustomerContext] => Add description here ) ) [InquiryNumber] => [TRACKING NUMBER] [TrackingOption] => 02 ) ) ) ) ) [previous:Exception:private] => [faultstring] => Could not connect to host [faultcode] => HTTP )

Я только что скачал UPS API с сайта. На моем phpinfo () мыло включено. Странно то, что когда я использовал c9.io, он работал отлично, но в настоящее время на моем локальном хосте я не могу заставить его работать.
Итак, в конце я получу xml-файл, который выводит результаты, найденные с использованием номера отслеживания.

2

Решение

Вы должны включить CURL в вашей локальной установке PHP.

1

Другие решения

UPS обновляет протоколы безопасности связи для всех веб-приложений, включая API-интерфейсы UPS.
Свяжитесь с ИТ-отделом или группой разработчиков вашей компании, чтобы убедиться, что все используемые в настоящее время протоколы безопасности соответствуют требованиям TLS 1.2. Если Java включен, он должен быть версии 1.7 или выше, чтобы использовать TLS 1.2.

Если при публикации в API возникают непостоянные проблемы с подключением, мы предлагаем внедрить логику повторных попыток в ваше приложение, так как это должно немедленно привести к облегчению при следующей попытке.

Если вы не можете сделать это, измените URL-адрес конечной точки, чтобы использовать temp-onlinetools.ups.com в качестве домена. Это временная среда, доступная для пользователей, которые сталкиваются с проблемами подключения из-за обновлений. Если это предлагаемое изменение решает проблему, вам нужно будет изменить свое решение для подключения к API, используя протокол безопасности TLS v1.2 или выше, начиная с этой временной среды. Если вы решите использовать эту среду, укажите дату, которую вы ожидаете, чтобы соответствовать TLS.

-1

По вопросам рекламы [email protected]