2014-03-05 61 views
1

使用QBO V3 API並試圖查詢名稱中帶有撇號的客戶,但我無法弄清楚如何正確引用名稱。如何在查詢過濾器中轉義單引號

我已經使用API​​瀏覽器,當我輸入一個查詢是這樣的:

select * from customer where displayname like '%O\'Halloran' 

然後API資源管理工作,並表示請求URI是真的:

https://qb.sbfinance.intuit.com/v3/company/1002341430/query?query=select * from customer where displayname like '%25O%5C'Halloran'

公告在我的查詢幾件事情:

  1. 我必須使用單引號周圍t他值
  2. 我必須自己逃避單引號。

但是,然後注意API Explorer給我回來的URI:它保留單引號封裝器字符串,但不會在值內部轉義單引號。

如果我轉身使用API​​ Explorer正在使用的確切請求URI - 它不起作用。我收到一個查詢過濾器異常。很顯然,API Explorer向我展示的不是真正的查詢。

由於這些都沒有記錄,我仍然試圖反向工程什麼是咒語,但我無法確定它。我已經看過PHP SDK,但是它沒有在那裏提到,他們認爲調用者(像我們)會知道自己該做什麼。

回答

2

您需要\逃避它,然後又URL編碼的實際URL請求你發送。

你打(爲LIKE '%Keith O'Malley%'客戶查詢的實際URL應該是這樣的:

https://quickbooks.api.intuit.com/v3/company/730176505/query?query=SELECT+%2A+FROM+Customer+WHERE+FullyQualifiedName+LIKE+%27%25Keith+O%5C%27Mally%25%27+ 

有了完整的HTTP請求看起來像:

GET https://quickbooks.api.intuit.com/v3/company/730176505/query?query=SELECT+%2A+FROM+Customer+WHERE+FullyQualifiedName+LIKE+%27%25Keith+O%5C%27Mally%25%27+ HTTP/1.1 
Content-Type: text/plain 
Authorization: OAuth realm="", oauth_signature_method="HMAC-SHA1", oauth_signature="C9mzgdURjATMEymtAySNe%2BYBW7Q%3D", oauth_nonce="3XDdP", oauth_timestamp="1394038522", oauth_token="lvprdgeo8rx8r1Ul10Bf474KjHEjcLFSVYttLJjcR2pFtIiD", oauth_consumer_key="qyprdlGJ4gWv4sMW0syilH2o4KirQe", oauth_version="1.0" 

如果你不致力於使用Intuit DevKit並不能正確地逃避事情,有一個開源的QuickBooks PHP DevKit可以正確處理這些事情:

這裏就是你要找的內容的具體的例子:

隨着其他工作實例一堆:

+0

:您可以請看看這個。我正在使用.net開發包。 http://stackoverflow.com/questions/22263206/quickbooks-api-v3-filters-quotation – user3277522

0

我與簡單地用URL編碼代替單引號字符成功:%27

如:查詢= SELECT%20Id%2CDisplayName%2CSyncToken%20FROM%20Customer%20WHERE%20Id%3E%270 %27%20MAXRESULTS%201000

僅供參考,我也注意到API控制檯和API資源管理器(幾乎是一個錯誤!),並會接受比實際調用更廣泛的語法變體。

0

如果你正在使用PHP或Ruby API來創建呼叫,那麼你應該逃避字符串中兩個字符\和「字符創建

例如與QuickBooks的紅寶石API

find_by("CompanyName", "Bill\\\'s Windsurf Shop") 

產生搜索Bill's Windsurg Shop的正確查詢

相關問題