Параметр поиска не работает с Outlook в

Я использовал базовый пример / учебник, описанный в «https://github.com/jasonjoh/php-tutorial«и попытался добавить параметр» $ search «в функцию getMessages ()

    $getMessagesParameters = array (
// Message Search Conditions
"\$search" => 'subject:"pizza"',
// Only return Subject, ReceivedDateTime, and From fields
"\$select" => "Subject,Body",
// Return at most 10 results
"\$top" => "10");
$getMessagesUrl = self::$outlookApiUrl."/Me/Messages?".http_build_query($getMessagesParameters);
$response = $this->makeApiCall($access_token, $user_email, "GET", $getMessagesUrl);

запрос возвращает ошибку 400

интересно, какой может быть правильный синтаксис

Я сослался на следующие ссылки

https://msdn.microsoft.com/office/office365/api/complex-types-for-mail-contacts-calendar#UseODataqueryparametersSearchrequests

https://msdn.microsoft.com/en-us/library/cc513841%28v=office.12%29.aspx

https://support.office.com/en-us/article/Learn-to-narrow-your-search-criteria-for-better-searches-in-Outlook-d824d1e9-a255-4c8a-8553-276fb895a8da

Если у кого-то есть идея для поиска по почте, предложите …

1

Решение

Вы не можете использовать orderby в результатах поиска.
увидеть https://msdn.microsoft.com/en-us/office/office365/api/complex-types-for-mail-contacts-calendar#UseODataqueryparametersSearchrequests
$ search = subject: «пицца» должна быть $ search = subject: пицца. Но это тоже не работает.
Я использую $ search = pizza, и это работает (без заказа)

0

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

Я выяснил точную проблему …

Проблема не в параметрах поиска / конечных точках REST сервера …

Но проблема в том, как мы отправляем параметры запроса на сервер …

Мы не должны URL кодировать данные.

но мы должны заменить пробелы + в результате URL

Это решение, которое я придумал …

    $search_AQS = '"Subject:(pizza+OR+hamburger+OR+tacos)+AND+subject:(NOT+beef+NOT+pork)"';
$getMessagesParameters = array (
"\$search" => $search_AQS,
"\$select" => "Subject,Body",
"\$top" => "10");
$tmp_uripiece = http_build_query($getMessagesParameters);
$tmp_uripiece = urldecode($tmp_uripiece);
$getMessagesUrl = self::$outlookApiUrl.'/Me/Messages?'.$tmp_uripiece;
$response = $this->makeApiCall($access_token, $user_email, "GET", $getMessagesUrl);

Ура! Microsoft также поддерживает функцию поиска в своих конечных точках … но они должны были документироваться с большим количеством примеров …

Всем спасибо за вашу поддержку …

0

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