반응형
웹 API에 게시할 때 지원되지 않는 미디어 유형 오류
윈도 폰 어플리케이션을 만들고 있어 웹 API에서 쉽게 꺼낼 수 있지만 포스팅에 어려움을 겪고 있습니다.API에 투고할 때마다 "Unsupported Media Type"이라는 오류 메시지가 표시되는데, JSON 투고 기준으로 사용하는 클래스가 API에서 사용하는 클래스와 동일하다는 점을 고려할 때 왜 이 오류가 발생하는지 알 수 없습니다.
견적서(포스트 방법)
private async void PostQuote(object sender, RoutedEventArgs e)
{
Quotes postquote = new Quotes(){
QuoteId = currentcount,
QuoteText = Quote_Text.Text,
QuoteAuthor = Quote_Author.Text,
TopicId = 1019
};
string json = JsonConvert.SerializeObject(postquote);
if (Quote_Text.Text != "" && Quote_Author.Text != ""){
using (HttpClient hc = new HttpClient())
{
hc.BaseAddress = new Uri("http://rippahquotes.azurewebsites.net/api/QuotesApi");
hc.DefaultRequestHeaders.Accept.Clear();
hc.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await hc.PostAsync(hc.BaseAddress, new StringContent(json));
if (response.IsSuccessStatusCode)
{
Frame.Navigate(typeof(MainPage));
}
else
{
Quote_Text.Text = response.StatusCode.ToString();
//Returning Unsupported Media Type//
}
}
}
}
인용문 및 토픽(모델)
public class Quotes
{
public int QuoteId { get; set; }
public int TopicId { get; set; }
public string QuoteText { get; set; }
public string QuoteAuthor { get; set; }
public Topic Topic { get; set; }
public string QuoteEffect { get; set; }
}
//Topic Model//
public class Topic
{
public int TopicId { get; set; }
public string TopicName { get; set; }
public string TopicDescription { get; set; }
public int TopicAmount { get; set; }
}
StringContent를 생성할 때 미디어 유형을 설정해야 합니다.
new StringContent(json, Encoding.UTF32, "application/json");
빠르고 더러운 역방향 프록시를 작업하던 중 이 질문을 발견했습니다.JSON이 아니라 폼 데이터가 필요했어요.
이게 날 속였어.
string formData = "Data=SomeQueryString&Foo=Bar";
var result = webClient.PostAsync("http://XXX/api/XXX",
new StringContent(formData, Encoding.UTF8, "application/x-www-form-urlencoded")).Result;
지원되지 않는 미디어 유형을 수정하려면 HttpRequestMessage를 사용하여 MediaTypeWithQuality를 가진 json을 받아들이는 헤더를 추가해야 합니다.HeaderValue는 Bellow와 같습니다.
var httpRequestMessage = new HttpRequestMessage
{
Content = new StringContent(json, Encoding.UTF8, "application/json")
};
httpRequestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var httpResponse = await _client.PostAsync("/contacts", httpRequestMessage.Content);
언급URL : https://stackoverflow.com/questions/31526558/unsupported-media-type-error-when-posting-to-web-api
반응형
'programing' 카테고리의 다른 글
중첩된 JSONB 필드의 개체에 대한 Postgresql 쿼리 (0) | 2023.03.13 |
---|---|
Get_the_terms - 모든 투고 유형을 표시합니다. (0) | 2023.03.13 |
React.js에 로컬 영상 로드 (0) | 2023.03.13 |
함수의 PHP 코드입니다.공유 호스팅에 있는 모든 워드프레스 웹사이트의 php (0) | 2023.03.13 |
$http 요청에서 응답이 올 때까지 angularjs로 어떻게 기다려야 합니까? (0) | 2023.03.13 |