2009-07-07 19 views
5

我想從一個名爲zillow的網站獲取API爲我工作,但我是網絡新手。他們試圖解釋如何使用它,但它讓我迷失了,所以我查看了他們的論壇。有人在那裏發佈了一個「示例」,但我看不到他們的代碼甚至調用API。基本上,我需要一個表單域,這將是一個地址,併發送信息,以找回數據,這裏是從球員例如採取的源代碼,如何將數據發送到API調用並使用zillow.com獲取它API

<html xml:lang="en" lang="en"> 
<head> 
    <title></title> 
</head> 
<body> 
<h3><font face="Verdana, Arial, Helvetica, sans-serif">Get Property < # >Zestimates 
    from Zillow</a></font></h3> 
<form method="post" action="/Real-Estate/Zestimate.php" name="zip_search"> 
    <table align="center" width="618"> 
    <tr> 
     <td colspan="2"><font face="verdana, arial, sans-serif">Please specify the 
     Property address. </font></td> 

     <td width="205" align="left"> <div align="left"><font face="Verdana, Arial, Helvetica, sans-serif"><#></a></font></div></td> 
    </tr> 
    <tr> 
     <td colspan="2"><font face="Verdana, Arial, Helvetica, sans-serif">Street</font>: 
     <input id="street2" type="text" maxlength="50" size="50" value="" name="street"/></td> 
     <td>&nbsp;</td> 
    </tr> 
    <tr> 
     <td colspan="2"><font face="verdana, arial, sans-serif">City, State or ZipCode:</font> 
     <input id="citystatezip3" type="text" maxlength="50" size="20" value="" name="citystatezip"/></td> 

     <td>&nbsp; </td> 
    </tr> 

    </table> 
    <div align="center"> 
    <input name="submit" type="submit" value="Get Zestimate"> 
    </div> 
</form> 

你可以看到它是一個簡單的表格,發佈自己的權利?但是,當我打開它從API中提取數據並顯示它,但我不知道如何。 我很樂意提供任何幫助,謝謝!

+0

你能鏈接到你正在論壇的論壇帖子嗎? – 2009-07-07 06:36:52

回答

5

根據http://www.zillow.com/howto/api/APIFAQ.htm#devkit,沒有JavaScript API。由於這個(和跨域限制),你必須使用服務器端語言。我將添加一個簡單的Java示例。

編輯:好的,在這裏。它只需要街道地址和城市/州,並返回一個格式化的值。錯誤檢查排除在外:

import java.text.NumberFormat; 

import org.w3c.dom.*; 
import org.xml.sax.*; 

import javax.xml.parsers.*; 

import javax.xml.transform.*; 
import javax.xml.transform.dom.*; 
import javax.xml.transform.stream.*; 

import java.io.*; 

import java.util.Currency; 

public class Zillow 
{ 
    private static final DocumentBuilderFactory dbFac; 
    private static final DocumentBuilder docBuilder; 
    static 
    { 
     try 
     { 
      dbFac = DocumentBuilderFactory.newInstance(); 
      docBuilder = dbFac.newDocumentBuilder(); 
     } 
     catch(ParserConfigurationException e) 
     { 
      throw new RuntimeException(e); 
     } 
    } 
    private static final String DEEP_URL = "http://www.zillow.com/webservice/GetDeepSearchResults.htm"; 
    private static final String ZESTIMATE_URL = "http://www.zillow.com/webservice/GetZestimate.htm"; 

    private static final String ZWSID = ...; 

    private static final NumberFormat nf = NumberFormat.getCurrencyInstance(); 

    // Returns Zestimate value for address. 
    public static String getValuation(String address, String cityStateZip) throws SAXException, IOException 
    { 
     Document deepDoc = docBuilder.parse(DEEP_URL + 
             "?zws-id=" + ZWSID + 
             "&address=" + address + 
             "&citystatezip=" + cityStateZip); 
     Element firstResult = (Element)deepDoc.getElementsByTagName("result").item(0); 
     String zpid = firstResult.getElementsByTagName("zpid").item(0).getTextContent(); 
     Document valueDoc = docBuilder.parse(ZESTIMATE_URL + 
              "?zws-id=" + ZWSID + 
              "&zpid=" + zpid); 
     Element zestimate = (Element)valueDoc.getElementsByTagName("zestimate").item(0); 
     Element amount = (Element)zestimate.getElementsByTagName("amount").item(0); 
     String currency = amount.getAttribute("currency"); 
     nf.setCurrency(Currency.getInstance(currency)); 
     return nf.format(Double.parseDouble(amount.getTextContent())); 
    } 

    public static void main(String[] args) throws Throwable 
    { 
     String address = args[0]; 
     String cityStateZip = args[1]; 
     System.out.println(getValuation(address, cityStateZip)); 
    } 
} 
+0

超棒的男人,謝謝一堆。我最終用PHP來做這件事,因爲我知道它更好。 – thatryan 2009-07-08 10:13:58

0

Nahhh ......這種方式:-)

建設兩個功能更容易和使用它們像這樣的Zillow。回來的迴應非常簡單。

string zWsid = "yourZwsid"; 
// sample API Call 
// http://www.zillow.com/webservice/GetSearchResults.htm?zws-id=<ZWSID>&address=2114+Bigelow+Ave&citystatezip=Seattle%2C+WA 

string response = string.Empty; 
int iZpid = 0; 
int iLotSizeSqFoot = 0; 
int iHomeValue = 0; 
float estimate = 0; 

try { 
    response = web_url("http://www.zillow.com/webservice/GetSearchResults.htm?zws-id=" + zWsid + "&address=" + addressTB.Text + "&citystatezip=" + CityStateZipTB.Text); 
} catch (Exception ex) { 
    MessageBox.Show("Exception occured! " + ex.ToString()); 
} 


// MessageBox.Show(response); 
try { 
    iZpid = Int32.Parse(parseTag(response, "zpid")); 
} 


/// you can make a lot of the calls and catch a lot of the values back just like this :-) 

///// Functions///// 

private string parseTag(string response, string tag) { 

    XmlDocument doc = new XmlDocument(); 
    doc.LoadXml(response); 
    XmlNodeList elemList = doc.GetElementsByTagName(tag); 
    string parsedTag = elemList[0].InnerXml; 
    return parsedTag; 

} 

private string web_url(string url) { 

    // Create a request for the URL. 
    WebRequest request = WebRequest.Create(url); 

    // If required by the server, set the credentials. 
    request.Credentials = CredentialCache.DefaultCredentials; 

    // Get the response. 
    WebResponse response = request.GetResponse(); 

    // Display the status. 
    // MessageBox.Show(((HttpWebResponse)response).StatusDescription); 
    // Get the stream containing content returned by the server. 
    Stream dataStream = response.GetResponseStream(); 

    // Open the stream using a StreamReader for easy access. 
    StreamReader reader = new StreamReader(dataStream); 

    // Read the content. 
    string responseFromServer = reader.ReadToEnd(); 

    // Display the content. 
    // MessageBox.Show(responseFromServer); 
    // Clean up the streams and the response. 
    reader.Close(); 
    response.Close(); 

    return responseFromServer; 
} 
相關問題