private async void GetAddressSearchBtn_Clicked(object sender, EventArgs e) { if (!string.IsNullOrEmpty(AddressEntry.Text) && ((string)AddressEntry.Text).Length == 7) { Address Ad = await APIAddress.GetAddressSearchResult(AddressEntry.Text); if (Ad == null) { await DisplayAlert("通知", "検索に失敗しました。検索条件を変更して再度検索してください。", "OK"); return; } this.BindingContext = Ad; } else { await DisplayAlert("警告", "郵便番号は7桁で入力いてください。", "OK"); } }
/// <summary> /// Retorna um endereço de acordo com o CEP indicado /// </summary> /// <param name="cep">CEP que será utilizado pela api para buscar o endereço</param> /// <returns>Endereço no formato da aplicação</returns> /// <exception cref="Exception"></exception> public async Task <Endereco> GetEnderecoByCEPAsync(string cep) { try { Endereco endereco = new Endereco() { CEP = cep }; HttpResponseMessage request = await client.GetAsync(@"https://viacep.com.br/ws/" + cep + "/json/"); if (request.IsSuccessStatusCode) { string jsonString = await request.Content.ReadAsStringAsync(); //Checa se a string de retorno contém erros if (jsonString.Contains("erro")) { throw new Exception("CEP inválido"); } //Converte a string JSON do endereço em um objeto APIAddress address = JsonConvert.DeserializeObject <APIAddress>(jsonString); endereco.Bairro = address.bairro; endereco.Cidade = address.localidade; endereco.Rua = address.logradouro; endereco.UF = (UnidadesFederativas)Enum.Parse(typeof(UnidadesFederativas), address.uf); } else { throw new Exception("Falha ao conectar com o serviço de Busca!"); } return(endereco); } catch (Exception ex) { throw ex; } }