0
I am developing an application Xamarin Forms that will persist data via web service (PHP - Mysql), but I have problems sending data via POST
I have the event below and the same from the message of Cadastrado com sucesso!, but when I check the database the information is empty.
Registration button event code
private async void cadastroButton_Clicked(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(nomeEntry.Text))
{
await DisplayAlert("Erro", "Campo nome obrigatório!", "Ok");
nomeEntry.Focus();
return;
}
if (string.IsNullOrEmpty(celularEntry.Text))
{
await DisplayAlert("Erro", "Campo celular obrigatório!", "Ok");
celularEntry.Focus();
return;
}
waitActivityIndicator.IsVisible = true;
waitActivityIndicator.IsRunning = true;
var ramal = new DeviceRamal
{
ram_nome = nomeEntry.Text,
ram_celular = celularEntry.Text,
};
var jsonRequest = JsonConvert.SerializeObject(ramal);
var content = new StringContent(jsonRequest, Encoding.UTF8, "text/json");
string result;
try
{
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://meusite.com.br");
string url = string.Format("/contato/insert.php");
var response = await client.PostAsync(url, content);
result = response.Content.ReadAsStringAsync().Result;
}
catch (Exception)
{
await DisplayAlert("Erro", "Sem conexão no momento!", "Ok");
return;
}
waitActivityIndicator.IsVisible = false;
waitActivityIndicator.IsRunning = false;
await DisplayAlert("Sucesso", "Cadastrado com sucesso!", "Ok");
}
If you do so Do not send the parameters
string url = string.Format("/contato/insert.php");
var response = await client.PostAsync(url, content);
If you do so Send the parameters
string url = string.Format("/contato/index.php?email={0}&password={1}", userEntry.Text, passwordEntry.Text);
var response = await client.GetAsync(url);
I took from the try catch and Sponse returns the following:
{Statuscode: 200, Reasonphrase: 'OK', Version: 1.1, Content: >System.Net.Http.Streamcontent, Headers: { Date: Thu, 04 Aug 2016 00:59:45 GMT Server: Apache X-Powered-By: PHP/5.4.42 Connection: close Transfer-Encoding: chunked Content-Type: text/html }}
Observing with Postasync does not work, with Getasync works, client.PostAsync("http://site.com.br/appramal/f/insertRamal.php?ram_celular={0}"...
And I touched the code and it still doesn’t work.
private async void cadastroRamalButton_Clicked(object sender, EventArgs e)
{
if (unidadePicker.SelectedIndex == -1)
{
await DisplayAlert("Erro", "Selecione a unidade", "Ok");
unidadePicker.Focus();
return;
}
if (string.IsNullOrEmpty(nomeEntry.Text))
{
await DisplayAlert("Erro", "Campo nome obrigatório!", "Ok");
nomeEntry.Focus();
return;
}
if (string.IsNullOrEmpty(ramalEntry.Text))
{
await DisplayAlert("Erro", "Campo nome obrigatório!", "Ok");
ramalEntry.Focus();
return;
}
if (string.IsNullOrEmpty(ramalVirtualEntry.Text))
{
await DisplayAlert("Erro", "Campo ramal virtual obrigatório!", "Ok");
ramalVirtualEntry.Focus();
return;
}
if (string.IsNullOrEmpty(celularEntry.Text))
{
await DisplayAlert("Erro", "Campo celular obrigatório!", "Ok");
celularEntry.Focus();
return;
}
if (setorPicker.SelectedIndex == -1)
{
await DisplayAlert("Erro", "Selecione o setor", "Ok");
setorPicker.Focus();
return;
}
if (string.IsNullOrEmpty(emailEntry.Text))
{
await DisplayAlert("Erro", "Campo email obrigatório!", "Ok");
emailEntry.Focus();
return;
}
if (string.IsNullOrEmpty(skypeEntry.Text))
{
await DisplayAlert("Erro", "Campo skype obrigatório!", "Ok");
skypeEntry.Focus();
return;
}
waitActivityIndicator.IsVisible = true;
waitActivityIndicator.IsRunning = true;
DeviceRamal ramal = new DeviceRamal();
ramal.ram_celular = celularEntry.Text;
ramal.ram_email = emailEntry.Text;
ramal.ram_nome = nomeEntry.Text;
ramal.ram_ramal = ramalEntry.Text;
ramal.ram_ramalvirtual = ramalVirtualEntry.Text;
ramal.ram_skype = skypeEntry.Text;
ramal.set_codigo = this.setorList[setorPicker.SelectedIndex].set_codigo;
ramal.uni_codigo = this.unidadeList[unidadePicker.SelectedIndex].uni_codigo;
string result;
HttpClient client = new HttpClient();
var response = client.PostAsync("http://site.com.br/appramal/f/insertRamal.php",
new StringContent(JsonConvert.SerializeObject(ramal).ToString(),
Encoding.UTF8, "application/json")).Result;
if (response.IsSuccessStatusCode)
{
dynamic content = JsonConvert.DeserializeObject(response.Content.ReadAsStringAsync().Result);
await DisplayAlert("Sucesso", "Ramal cadastrado com sucesso!", "Ok");
waitActivityIndicator.IsVisible = false;
waitActivityIndicator.IsRunning = false;
}
}
You are doing a POST and trying to pass the parameters through the URL?
– Jéf Bueno
Something else
try..catchdoes not take server error return failures asUnauthorized, etc. Check the contents of the variableresultand you’ll see that the actual server return. The way you’re doing will always beSucesso– rubStackOverflow