首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用curl实现Amadeus飞行API

用curl实现Amadeus飞行API
EN

Stack Overflow用户
提问于 2018-12-11 22:32:57
回答 3查看 1.1K关注 0票数 0

我想用curl使用Amadeus飞行API。因此,请帮助我使用核心PHP实现api。如果您可以在php中提供rest的所有三个示例(get、post、put、delete),那就太好了。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-02-20 12:14:41

由于还没有正式的PHP,我的雇主已经同意发布我们的API包装器类,以便向开放源码社区提供一些东西。这使得在PHP中使用自助API变得更加容易。

https://github.com/dahabtours/amadeus-php-sdk

代码语言:javascript
运行
复制
$amadeus_api = new AmadeusDahabtours\SelfServiceApiClient({CLIENT_ID}, {CLIENT_SECRET});

$amadeus_results = $amadeus_api->lowFares([
    'origin'        => 'FRA',
    'destination'   => 'CAI',
    'departureDate' => '2019-07-15',
]);
票数 1
EN

Stack Overflow用户

发布于 2018-12-12 00:01:32

这是php的一个例子,curl做授权(所以是一篇文章)。要获取API密钥API秘密,您可以遵循入门指南

代码语言:javascript
运行
复制
$url = 'https://test.api.amadeus.com/v1/security/oauth2/token';
$curls = curl_init();
curl_setopt($curls, CURLOPT_URL, $url);
curl_setopt($curls, CURLOPT_POST, true);
curl_setopt($curls, CURLOPT_POSTFIELDS, 'grant_type=client_credentials&client_id=API_KEY&client_secret=API_SECRET');
curl_setopt($curls, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
$token = curl_exec($curls);
curl_close($curls);
print_r ($token);

您需要从上一次调用中获取access_token,以便将其添加到下一次调用的头中。这是一个调用飞行灵感API的例子(不要忘记替换access_token):)。

代码语言:javascript
运行
复制
$url = 'https://test.api.amadeus.com/v1/shopping/flight-destinations?origin=MAD';
$curls = curl_init();
curl_setopt($curls, CURLOPT_URL, $url);

curl_setopt($curls, CURLOPT_HTTPHEADER, array('Authorization: Bearer access_token'));
$result = curl_exec($curls);
    if (curl_errno($curls)) {
        echo 'Error:' . curl_error($curls);
    }
print_r ($result);
curl_close ($curls);

如果您想要更多的示例,可以查看邮递员收藏,将语言转换为PHP并在正确的面板上获得示例(不要忘记添加标题):

CURLOPT_HTTPHEADER =>数组(“授权:承载access_token”),

票数 0
EN

Stack Overflow用户

发布于 2020-05-22 05:28:55

此代码基于PHP,还将工作所有类型的API环境:

代码语言:javascript
运行
复制
$wsdl='.....';  


$nonceBase=generateSomewhatRandomString();

$userId='XXXXXXXX';

$officeId='XXXXXXXXX';

$Pass=base64_encode('XXXXXXXX');

$messageId=generateGuid();

 $password = base64_decode($Pass);

            $creation = new \DateTime('now', new \DateTimeZone('UTC'));

            $t = microtime(true);

            $micro = sprintf("%03d", ($t - floor($t)) * 1000);

            $creationString = createDateTimeStringForAuth($creation, $micro);

            $messageNonce = generateUniqueNonce($nonceBase, $creationString);

            $encodedNonce = base64_encode($messageNonce);

            $digest = generatePasswordDigest($password, $creationString, $messageNonce);

 $SOAP_API_URL='https://nodeD2.test.webservices.amadeus.com/XXXXXXXXXXX';

$action='http://webservices.amadeus.com/XXXXXXXXXX';

$actionLast='XXXXXXXXXX';   

            $soapXML='<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://xml.amadeus.com/'.$actionLast.'" xmlns:ns2="http://www.w3.org/2005/08/addressing" xmlns:ns3="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-secext-1.0.xsd" xmlns:ns5="http://xml.amadeus.com/2010/06/Security_v1"><SOAP-ENV:Header><ns2:MessageID>'.$messageId.'</ns2:MessageID><ns2:Action>'.$action.'</ns2:Action><ns2:To>https://nodeD2.test.webservices.amadeus.com/1ASIWQTC1QI</ns2:To><oas:Security xmlns:oas="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><oas:UsernameToken xmlns:oas1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" Id="UsernameToken-1"><oas:Username>'.$userId.'</oas:Username><oas:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">'.$encodedNonce.'</oas:Nonce><oas:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">'.$digest.'</oas:Password><oas1:Created>'.$creationString.'</oas1:Created></oas:UsernameToken></oas:Security><ns5:AMA_SecurityHostedUser><ns5:UserID POS_Type="1" PseudoCityCode="'.$officeId.'" AgentDutyCode="SU" RequestorType="U"/></ns5:AMA_SecurityHostedUser></SOAP-ENV:Header><SOAP-ENV:Body>'.$wsdl.'</SOAP-ENV:Body></SOAP-ENV:Envelope>
';

$soapUser=$userId;

$soapPassword=$Pass;

$headers = [
        "Content-type: application/xml",
        'SOAPAction: "' . $action . '"'
    ];
     $ch = curl_init();

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

    curl_setopt($ch, CURLOPT_URL,$SOAP_API_URL);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLINFO_HEADER_OUT, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 60);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_USERPWD, $soapUser.":".$soapPassword);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $soapXML);
    $data = curl_exec($ch);
$your_xml_response = html_entity_decode($data);
$clean_xml = str_ireplace(['SOAP-ENV:', 'SOAP:', 'awsse:', 'wsa:'], '',$your_xml_response);
$clean_xml = str_ireplace(['&'], '&amp;', $clean_xml);
$Results = simplexml_load_string($clean_xml);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53733363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档