private async Task <IActionResult> search(string address, string city, string state, string zipcode) { address = WebUtility.UrlDecode(address); RealEstateSearchResults result = await m_service.Search(address, city, state, zipcode); return(Ok(result)); }
private async Task <RealEstateSearchResults> searchRestate(string address, string city, string state, string zipcode) { using (HttpClient client = new HttpClient()) { string citystatezip = string.Empty; if (!string.IsNullOrEmpty(city) && !string.IsNullOrEmpty(state)) { citystatezip = string.Format("{0} {1}", city, state); } else if (!string.IsNullOrEmpty(zipcode)) { citystatezip = zipcode; } try { client.BaseAddress = new Uri(WEB_SERVICE_URL); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml")); //client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xhtml+xml")); //client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/html")); //client.DefaultRequestHeaders.AcceptLanguage.Add(new StringWithQualityHeaderValue("en-US")); //client.DefaultRequestHeaders.AcceptLanguage.Add(new StringWithQualityHeaderValue("en", 0.8)); var response = await client.GetAsync(String.Format("/webservice/GetSearchResults.htm?zws-id={0}&address={1}&citystatezip={2}", API_KEY, address, citystatezip)); response.EnsureSuccessStatusCode(); string streamResult = await response.Content.ReadAsStringAsync(); streamResult = "<searchresults>" + streamResult.Substring(38 + 302); streamResult = streamResult.Replace("</SearchResults:searchresults>", "</searchresults>"); XmlDocument doc = new XmlDocument(); doc.LoadXml(streamResult); string json = JsonConvert.SerializeXmlNode(doc); ZillowResponse zResponse = JsonConvert.DeserializeObject <ZillowResponse>(json); Console.Out.WriteLine(json); searchresults oresult = zResponse.searchresults; if (oresult != null && oresult is searchresults) { searchresults searchResult = oresult as searchresults; Message msg = searchResult.message; RealEstateSearchResults restateSearchResults = new RealEstateSearchResults(); if (msg != null && msg.code != null) { errorMap.TryGetValue(msg.code, out restateSearchResults.Error); } if (msg.limitwarning && "0".CompareTo(msg.code) == 0) { if (searchResult.response.results.result != null) { restateSearchResults.Results = new List <RealEstateSearchResult>(); foreach (SimpleProperty result in searchResult.response.results.result) { RealEstateSearchResult sResult = new RealEstateSearchResult { Address = createAddress(result.address), Links = createLinks(result.links), Estimate = createEstimate(result.zestimate), RentalEstimate = createEstimate(result.rentzestimate), NeighborHoods = createNeighborHoods(result.localRealEstate) }; restateSearchResults.Results.Add(sResult); } } else { restateSearchResults.Error = ErrorCodes.LIMIT_REACHED; } } else { if (!msg.limitwarning) { restateSearchResults.Error = ErrorCodes.LIMIT_REACHED; } } return(restateSearchResults); } } catch (HttpRequestException httpRequestException) { Console.Out.WriteLine(httpRequestException); return(new RealEstateSearchResults { Error = ErrorCodes.SERVER_ERROR }); } catch (Exception ex) { Console.Out.WriteLine(ex); return(new RealEstateSearchResults { Error = ErrorCodes.SERVER_ERROR }); } } return(new RealEstateSearchResults { Error = ErrorCodes.SERVER_ERROR }); }