Как отправить json и данные формы через один и тот же api в xamarin?
Привет!У меня есть метод API,который должен отправлять на сервер как json, так и формат данных формы, но я не понимаю, как я могу этого добиться.В настоящее время у меня есть этот метод, который возвращает 415 неподдерживаемых типов носителей:
public async Task<JObject> AddUser(User user, MediaFile file) { string userRegisterUrl = "http://10.0.2.2:53547/api/PostUser"; HttpContent fileStreamContent = new StreamContent(file.GetStream()); var json = JsonConvert.SerializeObject(user); HttpClientHandler clientHandler = new HttpClientHandler(); clientHandler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => { return true; }; try { using (var formData = new MultipartFormDataContent()) { formData.Add(fileStreamContent, Guid.NewGuid().ToString() + "jpg"); formData.Add(new StringContent(json.ToString())); using(HttpClient client = new HttpClient(clientHandler)) { var responce = await client.PostAsync(userRegisterUrl, formData); string contents = await responce.Content.ReadAsStringAsync(); return (JObject.Parse(contents)); } } }catch(Exception ex) { throw ex; } }
Как я могу добиться этого, чтобы передаваемые данные не были затронуты?
Что я уже пробовал:
public async Task AddUser(User user,MediaFile file) { string userRegisterUrl = "http://10.0.2.2:53547/api/PostUser"; HttpClientHandler clientHandler = new HttpClientHandler(); clientHandler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => { return true; }; var json = JsonConvert.SerializeObject(user); StringContent content = new StringContent(json); HttpContent fileStreamContent = new StreamContent(file.GetStream()); using (var httpClient = new HttpClient(clientHandler)) { using (var formData = new MultipartFormDataContent()) { httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("multipart/form-data")); formData.Add(fileStreamContent); formData.Add(content); var responses = await httpClient.PostAsync(userRegisterUrl, formData); if (responses.IsSuccessStatusCode) { //var result = response.Content.ReadAsStringAsync().Result; } } } }
Richard MacCutchan
Вам нужно посмотреть на код API, чтобы увидеть, в каком формате должны быть данные.
Eliza Maria
Спасибо за ваш ответ.Я на самом деле не понимаю, что вы хотите этим сказать, поскольку у меня есть изображение, которое является данными формы, и сведения о пользователе, которые являются форматом json.Я не могу передать изображение на сервер в виде json, поскольку оно получено сервером в виде IFormFile и загружено в папку.