2010-07-12 110 views
0

我試圖根據用戶的經度和緯度使用Yelp API獲取當地餐館。麻煩的是我很確定如何做到這一點。看看我需要從中檢索數據的頁面,它說這個類型是text/plain。我可以使用Ajax來做到這一點,否則我將無法使用它,因爲它是一個不同的域名?JSON和Yelp API入門

編輯:我想從檢索內容的頁面是:http://api.yelp.com/business_review_search?term=yelp&tl_lat=37.9&tl_long=-122.5&br_lat=37.788022&br_long=-122.399797&limit=3&ywsid=w_HyGEVjKFHYZdJC9DQBHg

我可以使用的file_get_contents做到這一點在PHP沒有問題的(),但該網站使用ASP內置。在asp中有沒有類似的功能?我可以使用中間頁面作爲獲取和輸出數據的代理。

+0

您是否有鏈接到您正在查看的Yelp API頁面? – 2010-07-12 20:10:50

+1

僅供參考,您將您的Yelp鑰匙留在那裏。我意識到這已經持續了一年多了,所以如果有人想濫用它,它已經發生了。 – dguaraglia 2011-08-24 00:10:49

回答

0

我最終使用了一個從Yelp抓取頁面並輸出JSON的中間頁面。下面是一個代碼片段:

SET XmlObj = Server.CreateObject("Microsoft.XMLHTTP") 
XmlObj.open "POST", url, FALSE 
XmlObj.send 
Response.write(XmlObj.responseText) 

在我的我用的Ajax從我的中間頁搶輸出,然後JavaScript來的JSON並輸出結果進行解碼原始頁面。

它工作正常,但我確定有更好的方法。

1

您可以在Classic ASP中完成整個任務,而無需使用任何其他語言或頁面。您將需要一件事 - 有一個名爲JSON2.ASP的庫,您需要解析結果。你可以找到更多關於它在這裏:

http://zend.lojcomm.com.br/entries/classic-asp-json-revisited/

https://github.com/nagaozen/asp-xtreme-evolution/blob/master/lib/axe/classes/Parsers/json2.asp

一旦你有了這個,你可以得到Yelp的結果,並在傳統的ASP容易解析。我正在用API 1.0來做這件事,因爲它更容易一些,但如果你確定的話,你可以用它作爲API 2.0中的一個起點。

下面是將返回餐館搜索結果的代碼。您當然需要填寫您的API代碼,其中YWSID位於下面的URL中。我將結果輸入到一個數組中,然後從數組中創建一個表以顯示在頁面上,但是隻要有數據,您就可以隨意使用它。

<!--#include file="JSON2.asp"--> 
<% 
set xmlHTTP = server.createobject("MSXML2.ServerXMLHTTP.6.0") 
xmlHTTP.open "GET", "http://api.yelp.com/business_review_search?location=Clare%20Ireland&ywsid=XXXXXXXXXX&category=restaurants", false 
xmlHTTP.send() 
RawFeed = xmlHTTP.ResponseText 
Set RawResults = JSON.parse(join(array(RawFeed))) 
For Each YelpFeed In RawResults.Get("businesses") 
If YelpFeed.Get("is_closed") = "False" Then 
    Response.write YelpFeed.Get("name") & "<br>" & vbNewLine 
    Response.write YelpFeed.Get("rating_img_url") & "<br>" & vbNewLine 
    Response.write YelpFeed.Get("address1") & "<br>" & vbNewLine 
    Response.write YelpFeed.Get("phone") & "<br>" & vbNewLine 
    Response.write YelpFeed.Get("photo_url") & "<br>" & vbNewLine 
    Response.write YelpFeed.Get("review_count") & "<br>" & vbNewLine 
End If 

Next 
Set RawResults = nothing 
%>