[c#] POST에서 웹 API 서비스로 json을 보내는 동안 오류가 발생했습니다.
Web API를 사용하여 웹 서비스를 만들고 있습니다. 간단한 수업을 구현했습니다.
public class ActivityResult
{
public String code;
public int indexValue;
public int primaryCodeReference;
}
그런 다음 컨트롤러 내부에 구현했습니다.
[HttpPost]
public HttpResponseMessage Post(ActivityResult ar)
{
return new HttpResponseMessage(HttpStatusCode.OK);
}
그러나 POST에서 json 파일을 전달하는 API를 호출하면 다음과 같습니다.
{"code":"XXX-542","indexValue":"3","primaryCodeReference":"7"}
다음과 같은 오류 메시지가 나타납니다.
{
"Message": "The request entity's media type 'text/plain' is not supported for this resource.",
"ExceptionMessage": "No MediaTypeFormatter is available to read an object of type 'ActivityResult' from content with media type 'text/plain'.",
"ExceptionType": "System.Net.Http.UnsupportedMediaTypeException",
"StackTrace": " in System.Net.Http.HttpContentExtensions.ReadAsAsync[T](HttpContent content, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)\r\n in System.Net.Http.HttpContentExtensions.ReadAsAsync(HttpContent content, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)\r\n in System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage request, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)"
}
내가 도대체 뭘 잘못하고있는 겁니까?
답변
HTTP 요청에서 Content-Type을 다음과 같이 설정해야합니다. Content-Type: application/json
따라서 피들러 클라이언트를 사용 Content-Type: application/json
하는 경우 요청 헤더에 추가하십시오.
답변
- 헤더 속성을 추가해야합니다.
Content-Type:application/json
-
당신은 주석이되어야 모든 POST 요청 방법 입력 매개 변수를 정의 할 때
[FromBody]
, 예를 :[HttpPost] public HttpResponseMessage Post([FromBody]ActivityResult ar) { return new HttpResponseMessage(HttpStatusCode.OK); }
-
모든 JSON 입력 데이터는 원시 데이터 여야합니다 .
답변
또 다른 팁 … “content-type : application / json”…을 Composer / Parsed 탭의 텍스트 상자 필드에 추가하는 곳입니다. 이미 3 줄이 채워져 있으므로이 Content-type을 4 번째 줄로 추가했습니다. 그것이 포스트를 작동하게했습니다.
답변
POST
대신 방법을 전달하고 있는지 확인하십시오 GET
. 그렇다면 위에 게시 한 것과 동일한 오류가 발생합니다.
$http({
method: 'GET',
요청 엔터티의 미디어 유형 ‘text / plain’은이 리소스에 대해 지원되지 않습니다.
답변
나는 모든 설정을 수락 된 답변으로 다루었습니다. 내가 가진 문제는 다음과 같이 Entity Framework 엔터티 유형 “Task”를 업데이트하려고한다는 것입니다.
public IHttpActionResult Post(Task task)
나를 위해 일한 것은 다음과 같은 내 고유 엔티티 “DTOTask”를 만드는 것이 었습니다.
public IHttpActionResult Post(DTOTask task)
답변
Content-Type:application/json
콘텐츠를 언급하지 않을 때 웹 API 요청 헤더 섹션 에 포함해야하며 기본적 Content-Type:text/plain
으로 요청에 전달됩니다.
우편 배달부 도구에서 API를 테스트하는 가장 좋은 방법입니다.