Zillow.com API를 사용하여 API 전화로 데이터를 보내고 다시 가져 오는 방법

StackOverflow https://stackoverflow.com/questions/1090659

  •  11-09-2019
  •  | 
  •  

문제

나는 Zillow라는 웹 사이트에서 API를 얻으려고 노력하고 있지만 웹에 익숙하지 않습니다. 그들은 노력하고 설명합니다 여기 그것을 사용하는 방법이지만, 나는 그들의 포럼을 보았을 때 잃어 버렸습니다. 누군가 "예제"를 게시했지만 코드가 API를 호출하는 위치를 알 수 없습니다. 기본적으로 주소가 될 양식 필드를 가져 와서 데이터를 되 찾으려면 해당 정보를 보내야합니다. 다음은 Guys 예제에서 가져온 소스 코드입니다.

<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>

당신은 그것이 올바르게 게시하는 간단한 형태라는 것을 알 수 있습니까? 그러나 내가 Go를 치면 API에서 데이터를 가져와 표시하지만 방법을 알 수 없습니다. 나는 당신이 제공 할 수있는 도움을 좋아합니다. 감사합니다!

도움이 되었습니까?

해결책

기반 http://www.zillow.com/howto/api/apifaq.htm#devkit, JavaScript API가 없습니다. 이 (및 크로스 도메인 제한)로 인해 서버 측 언어를 사용해야합니다. 간단한 Java 예제를 추가하겠습니다.

편집 : 좋아, 여기 간다. 거리 주소와 도시/상태를 취하고 형식 값을 반환합니다. Error-Checking Fext :

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));
    }
}

다른 팁

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;
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top