문제점
content type을 application/json으로 넣을 경우의 body엔 application/json에 맞게 String값이 들어가야하는데 map형식으로 넣어서 문제 발생
다시 말해서 application/json은 json string(json 형태를 문자열로 입력하는 형식)타입을 전송한단 것을 의미하기 때문에 map으로 넣으면 안되는 것
해결방법
map형식인 데이터를 dart:convert 패키지 내의 jsonEncode함수로 래핑하여 String으로 변경되어 들어가도록 구현
예시는 아래와 같다.
import 'package:http/http.dart';
import 'dart:convert';
func() async {
final result = await post(Uri.parse('http://10.0.2.2:3000/api/account/login'),
headers: {'Content-Type': 'application/json'},
body: jsonEncode(data.toJson())
);
}
content type이 application/x-www-form-urlencoded이여도 상관없다면 content type을 직접 헤더로 선언하지 않고 body에 map을 넣으면 content type이 기본적으로 application/x-www-form-urlencoded으로 들어가므로 key:value형식으로 전송되므로 문제없이 전송가능하다.
IANA에 따라 json형식은 application/json형식으로 전송하는 것이 맞음
이 문제는 content type에 대한 이해가 부족해서 발생한 것이므로 제대로 된 공부가 필요
참고
'개발 > Flutter' 카테고리의 다른 글
package 이름 변경 (0) | 2022.06.11 |
---|---|
Error running pod install (0) | 2022.06.10 |
입력란에 값 보이지 않게 하기 (비밀번호 입력) (0) | 2022.05.09 |
[Error] RenderBox was not laid out (0) | 2022.05.08 |
뒤로가기 (leading) 버튼 자동 생성 막기 (0) | 2022.05.08 |