작성
·
757
0
Node.js express 로 라우터를 설정해 다음과 같은 코드로 http 통신을 했습니다
/api/test1
주소의 post 라우터에서 /api/test2
주소의 post 라우터로 redirect 되는 통신을 테스트 해보았습니다
onPressed: () async {
var res = await http.post(Uri.parse("$uri/api/test1"),
headers: <String, String>{
'Content-Type': 'application/json; charset=UTF-8',
},
body: jsonEncode(
{
"key1": "1000",
},
));
if (res.statusCode == 307) {
var newURL = res.headers["location"];
print(res.body);
res = await http.post(Uri.parse("$uri$newURL"),
headers: <String, String>{
'Content-Type': 'application/json; charset=UTF-8',
},
body: jsonEncode(
{
"key1": "1000",
},
));
print(res.body);
} else {
var data = res.body;
print(data);
}
},
테스트 결과 제가 데이터를 올바르게 전송할 수 있었습니다 그리고 이번에 선생님의 강의를 듣고 dio라는 패키지를 알게되어서 dio 패키지를 통해서 똑같은 통신 테스트를 해 보았습니다
onPressed: () async {
final dio = Dio(BaseOptions(
contentType: "application/json",
followRedirects: false,
maxRedirects: 5,
));
final url = "$uri/api/test1";
final body = {'key1': '1000'};
final headers = {'Content-Type': 'application/json'};
try {
Response res = await dio.post(
url,
data: body,
);
if (res.statusCode == 307) {
final redirectUrl = res.headers.value("location");
final redirectRes = await dio.post(
redirectUrl!,
data: body,
options: Options(
headers: headers,
method: "POST",
),
);
print(redirectRes.data);
} else {
final data = res.data;
print(data);
}
} catch (e) {
print("error 발생 $e");
}
},
followRedirects
을 true 로 해도 307 코드를 해결하지는 못하는것 같습니다
flutter: error 발생 DioError [DioErrorType.response]: Http status error [307]
어떻게 dio 패키지로 redirect 를 처리 할 수 있을까요?