I have a post method that sends json to my api.
My endpoint works in postman so my problem is in my xamarin post request:
async void RegisterUser(object sender, System.EventArgs e)
{
string URL = "http://blablahblah:51001/register";
HttpClient client = new HttpClient();
var model = new RegisterViewModel
{
Email = EntryEmail.Text,
FirstName = FirstName.Text,
LastName = LastName.Text,
Password = EntryPasswrd.Text
};
var content = JsonConvert.SerializeObject(model);
await client.PostAsync(URL, new StringContent(content));
}
after it hits the await client.PostAsync(URL, new StringContent(content)); line, the application just stops dead. no error messages or anything like that.
Any ideas?
EDIT:
My register method in my API solution:
[Route("register")]
[HttpPost]
public async Task<ActionResult> InsertUser([FromBody] RegisterViewModel model)
{
var user = new IdentityUser
{
Email = model.Email,
UserName = model.Email,
SecurityStamp = Guid.NewGuid().ToString()
};
var result = await _userManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
var newUser = new User
{
Username = model.Email,
FirstName = model.FirstName,
LastName = model.LastName
};
_dbContext.Users.Add(newUser);
await _dbContext.SaveChangesAsync();
}
return Ok(new { Username = user.UserName });
}
and my view model i am passing the data through:
public class RegisterViewModel
{
[Required]
[EmailAddress]
public string Email { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
[Required]
public string Password { get; set; }
}
I have since rewrote my post method using the below suggestions, its still not returning any errors inside my catch block:
public async Task<string> Registered(object details)
{
string URL = "http://blahblah:51001/register";
HttpClient client = new HttpClient();
var model = new RegisterViewModel
{
Email = EntryEmail.Text,
FirstName = FirstName.Text,
LastName = LastName.Text,
Password = EntryPasswrd.Text
};
var content = JsonConvert.SerializeObject(model);
try
{
await client.PostAsync(URL, new StringContent(content));
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
return "Registration Successful";
}