Intereting Posts
php session не работает для всплывающего входа Декларация методов должна быть совместима с родительскими методами в PHP PHP glob () для отображения файла, который не начинается с подчеркивания? Проблема при загрузке файлов размером более 10 МБ в IE6 Реализовать свойства singleton: статические классы или переменные статического метода? PHP Показать исходный код вместо файла .html Как преобразовать номер недели и год в временную метку unix? конвертировать php-ассоциативный массив в объект javascript Вызовите контроллер с другого контроллера Сортировка несортированного текстового файла и переписывание в тот же текстовый файл в отсортированном порядке как читать файлы, сохраненные на сервере, используя php и совершать вызовы на эту php-страницу, используя ajax для отображения списка файлов как передать переменную POST по ссылкам на собственные страницы? Преобразование первого элемента массива в строку в PHP Проводка из cURL: HTTP_X_REQUESTED_WITH PHP получает тело запроса PUT

Отправка пользовательского HTTP-запроса с помощью PHP

Я пытаюсь выполнить аутентификацию с помощью нового API Office 365. Я успешно прошел аутентификацию, и я плаваю в саду из роз.

Тем не менее, последняя часть предназначена для отправки пользовательского HTTP-запроса с помощью моего блестящего нового токена доступа. Однако, похоже, он не работает.

Может кто-то, пожалуйста, изложить, как отправить HTTP-запрос, подробно описанный ниже, с помощью PHP?

GET https://outlook.office365.com/EWS/OData/Me/Inbox/Messages?$top=5 User-Agent: My-Cool-WebApp/1.0 client-request-id: 9aa1c740-25e2-4841-9146-ef7018f7bf37 return-client-request-id: true authorization: Bearer {access token your app received in Step Three} 

благодаря

Связанный учебник MSDN здесь

Код ниже:

 $code = $_GET['code']; $accessToken = AccessCode::getCode($code); $EmailData = EmailSearch::getEmail($accessToken); class AccessCode { public static function getCode($code) { // $url = 'https://login.windows.net/common/oauth2/token'; // $data = array('grant_type' => 'authorization_code', 'code' => $code, 'redirect_uri' => 'redirect_uri','client_id' => 'client_id','client_secret' => 'client_secret', 'resource' => '00000002-0000-0ff1-ce00-000000000000'); // $options = array( 'http' => array( 'header' => "Content-type: application/x-www-form-urlencoded\r\n", 'method' => 'POST', 'content' => http_build_query($data), ), ); // $context = stream_context_create($options); // $result = json_decode(file_get_contents($url, false, $context)); // return $result->access_token; } } class EmailSearch { public static function getEmail($accessToken) { // $url = 'https://outlook.office365.com/EWS/OData/Me'; $requestID = create_guid(); $request_headers = array('client-request-id: '. $requestID, 'return-client-request-id: true', "Authorization: Bearer $accessToken"); // $ch = curl_init($url); curl_setopt($ch, CURLOPT_USERAGENT, 'GV-Email-Forward/1.0'); curl_setopt($ch, CURLOPT_HTTPHEADER, $request_headers); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch); var_dump($result); } } function create_guid($namespace = '') { static $guid = ''; $uid = uniqid("", true); $data = $namespace; $data .= $_SERVER['REQUEST_TIME']; $data .= $_SERVER['HTTP_USER_AGENT']; $data .= $_SERVER['LOCAL_ADDR']; $data .= $_SERVER['LOCAL_PORT']; $data .= $_SERVER['REMOTE_ADDR']; $data .= $_SERVER['REMOTE_PORT']; $hash = strtoupper(hash('ripemd128', $uid . $guid . md5($data))); $guid = '{' . substr($hash, 0, 8) . '-' . substr($hash, 8, 4) . '-' . substr($hash, 12, 4) . '-' . substr($hash, 16, 4) . '-' . substr($hash, 20, 12) . '}'; return $guid; } 

Вы можете использовать cURL:

Вот простой пример:

 <?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://www.example.com/"); curl_setopt($ch, CURLOPT_HEADER, 0); curl_exec($ch); curl_close($ch); ?> 

Вы найдете список параметров, которые вам понадобятся там: http://www.php.net/manual/en/function.curl-setopt.php

Вы можете сделать это довольно легко с помощью функций PHP cURL .

Например:

 <?php $url = 'https://outlook.office365.com/EWS/OData/Me/Inbox/Messages?$top=5'; $request_headers = array('client-request-id: 9aa1c740-25e2-4841-9146-ef7018f7bf37', 'return-client-request-id: true', "authorization: $my_access_token"); $ch = curl_init($url); curl_setopt($ch, CURLOPT_USERAGENT, 'My-Cool-WebApp/1.0'); curl_setopt($ch, CURLOPT_HTTPHEADER, $request_headers); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); curl_close($ch); // Now do something with $result... 

Убедитесь, что вы используете одинарные кавычки для объявления $url , иначе $top будет интерпретироваться как ссылка на переменную PHP.