2016-03-01 87 views
1

我用在「https://github.com/jasonjoh/php-tutorial」中描述的基本的例子/教程,並試圖添加「$搜索」參數中的getMessages()函數搜索參數不與Outlook工作RESTAPI

$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

如果有人有更好的想法通過郵件進行搜索,請建議...

+0

哪些是您使用API​​的版本?是否有可能顯示最終請求url(您可以通過fiddler或您的瀏覽器調試器 - 網絡部分獲取)? –

+0

@BenoitPatra我們不能使用瀏覽器調試器來捕獲url ...請求是從服務器發出的......無論如何你可以得到這個想法......代碼使用'http_build_query()'和'$ outlookApiUrl = 「https://outlook.office.com/api/v2.0」'。結果網址看起來類似於'https://outlook.office.com/api/v2.0/Me/Messages?$search=subject:"pizza"&$select=Subject,Body&$orderby=ReceivedDateTime DESC&$頂部= 10'和特殊字符可能是網址編碼...重點是當我刪除'$搜索'參數,沒有錯誤返回 –

回答

0

我已經想通了確切的問題...

問題是不是與搜索參數規格/服務器REST端點...

但問題是,我們如何將查詢參數發送到服務器...

我們不應該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); 

耶!微軟還支持搜索功能,在它們的端點...但他們應該有更多的例子已經證明......

每個人都感謝您的支持...

0

在搜索結果中不能使用排序依據。 請參閱https://msdn.microsoft.com/en-us/office/office365/api/complex-types-for-mail-contacts-calendar#UseODataqueryparametersSearchrequests $ search = subject:「pizza」應該是$ search = subject:pizza。但那也行不通。 我用$搜索=比薩餅和工作(不排序依據)

+0

雖然這可能在理論上回答這個問題,[這將是更可取的](/ /元.stackoverflow.com/q/8259)在這裏包含答案的基本部分,並提供供參考的鏈接。 – manetsus

+0

@max,對不起,我已經從參數中刪除了'$ orderby' ......但問題就像你說的,當我在搜索查詢中包含運算符':'時,'$ search = subject :pizza'我得到一個http 400錯誤...是來自curl()還是來自Outlook REST API服務器端點結果?我不確定... –