private async Task <ResponseAddress> GetAddressFromCorreiosByCep(string cep, CancellationToken cancellationToken) { var dict = new Dictionary <string, string> { { "pagina", "/app/endereco/index.php" }, { "endereco", cep }, { "tipoCEP", "ALL" } }; var httpRequest = new HttpRequestMessage(HttpMethod.Post, UrlCorreio) { Content = new FormUrlEncodedContent(dict), }; var httpResponse = await _client.SendAsync(httpRequest, cancellationToken).ConfigureAwait(false); var cepResponse = await httpResponse.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); var respConvertido = JsonConvert.DeserializeObject <ResponseCorreios>(cepResponse); var size = respConvertido.Dados.Length; var address = new ResponseAddress() { Infos = new AddressInfo[size] }; for (int i = 0; i < size; i++) { address.Infos[i] = new AddressInfo { Bairro = respConvertido.Dados[i].Bairro, Cep = respConvertido.Dados[i].Cep, Cidade = respConvertido.Dados[i].Localidade, Rua = respConvertido.Dados[i].LogradouroDNEC, Uf = respConvertido.Dados[i].Uf }; } return(address); }
public async Task <Boolean> Download() { String _specifier = "#.##"; String _pointsRequest = "https://maps.googleapis.com/maps/api/place/nearbysearch/json?location="; HttpResponseMessage response; _pointsRequest += Position.Latitude.ToString(_specifier).Replace(",", ".") + "," + Position.Longitude.ToString(_specifier).Replace(",", "."); _pointsRequest += "&radius=5000&sensor=false&key=" + GooglePlusServer.Key; //Create the Request URL for the routing service Uri routeRequest = new Uri(_pointsRequest); //Make a request and get the response HttpClient client = new HttpClient(); try { response = await client.GetAsync(routeRequest); } catch (HttpRequestException) { return(false); } if (response.StatusCode != HttpStatusCode.OK) { return(false); } Stream inputStream = await response.Content.ReadAsStreamAsync(); DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(ResponsePlace)); inputStream.Seek(0, SeekOrigin.Begin); ResponsePlace r0 = new ResponsePlace(); r0 = ser.ReadObject(inputStream) as ResponsePlace; if (r0 != null && r0.results != null && r0.results.Count() > 0 && r0.results[0].reference != null && r0.results[0].reference.Length > 0) { //second request String _addressRequest = "https://maps.googleapis.com/maps/api/place/details/json?reference="; _addressRequest += r0.results[0].reference; _addressRequest += "&sensor=true&key=" + GooglePlusServer.Key; routeRequest = new Uri(_addressRequest); client = new HttpClient(); try { response = await client.GetAsync(routeRequest); } catch (HttpRequestException) { return(false); } Stream inputStreamAddress = await response.Content.ReadAsStreamAsync(); ser = new DataContractJsonSerializer(typeof(ResponseAddress)); inputStreamAddress.Seek(0, SeekOrigin.Begin); ResponseAddress r1 = new ResponseAddress(); r1 = ser.ReadObject(inputStreamAddress) as ResponseAddress; if (r1 != null && r1.result != null && r1.result.address_components != null && r1.result.address_components.Count() > 0) { foreach (AddressComp _comp in r1.result.address_components) { if (_comp.types[0].Equals("country")) { PictureInfos.Country = _comp.long_name; PictureInfos.Code = _comp.short_name.ToLower(); PictureInfos.InfoPresent = true; } else if (_comp.types[0].Equals("administrative_area_level_1")) { PictureInfos.Region = _comp.short_name; } else if (_comp.types[0].Equals("locality")) { PictureInfos.City = _comp.long_name; } else if (_comp.types[0].Equals("administrative_area_level_2") && (PictureInfos.City == null)) { PictureInfos.City = _comp.long_name; } else if (_comp.types[0].Equals("establishment")) { PictureInfos.Establishment = _comp.short_name; } } } } return(PictureInfos.InfoPresent); }