POST에서 json을 웹 API 서비스로 보내는 중 오류가 발생했습니다.
웹 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에서 전달되는 API를 파일 json으로 호출하면 다음과 같습니다.
{"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
fiddler 클라이언트를 사용하는 경우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행이나 기입되어 있기 때문에, 이 컨텐츠 타입을 4행째에 추가했습니다.그게 포스트를 작동하게 만들었지
다음과 같이 메서드를 전달하고 있는지 확인하십시오.POST
대신에GET
이 경우 위에 게시한 에러와 같은 에러가 표시됩니다.
$http({
method: 'GET',
이 리소스에 대해 요청 엔티티의 미디어 유형 'text/plain'이 지원되지 않습니다.
나는 내 모든 설정을 수용된 답변에 포함시켰다.문제는 엔티티 프레임워크 엔티티 유형 "태스크"를 다음과 같이 업데이트하려고 한다는 것입니다.
public IHttpActionResult Post(Task task)
저는 다음과 같은 나만의 엔티티 "DTOTask"를 만드는 것이 효과적이었습니다.
public IHttpActionResult Post(DTOTask task)
다음을 포함해야 합니다.Content-Type:application/json
web api request header 섹션에서 콘텐츠를 언급하지 않을 경우 기본적으로는Content-Type:text/plain
패스 투 리퀘스트
postman 툴에서 api를 테스트하는 가장 좋은 방법입니다.
언급URL : https://stackoverflow.com/questions/22384354/error-sending-json-in-post-to-web-api-service
'programing' 카테고리의 다른 글
BadValue가 잘못되었거나 사용자 로케일이 설정되지 않았습니다.LANG 또는 LC_* 환경변수가 올바르게 설정되어 있는지 확인하십시오. (0) | 2023.03.27 |
---|---|
MUI 툴팁 스타일링 방법 (0) | 2023.03.27 |
일반적으로 하나의 컴포넌트에 하나 또는 여러 개의 useEffect 훅을 사용하는 것이 좋습니까? (0) | 2023.03.27 |
json 스키마에서 배열의 최소 크기를 정의하는 방법 (0) | 2023.03.27 |
스프링 부트바인드 @Value to Enum 대소문자를 구분하지 않음 (0) | 2023.03.22 |