Я пытаюсь отправить форму на сервер, и вот код:
ar request = new http.MultipartRequest("POST", _uri);
request.fields['user_acc'] = _userAcc;
// this issue should be solve
request.fields['user_nick_name'] = '中文名字';
request.fields['user_password'] = _password;
Но сторона сервера в поле user_nick_name всегда имеет значение NULL, обратите внимание, что всегда , ноЯ изменяю это на английский, что сервер может получить это.Я тестирую на почтальоне, сервер может получить китайский язык правильно, так что это проблема MultipartRequest по этой проблеме.
Мой вопрос: Почему команда Дартс или Флаттер так небрежно относится к этой столь важной базовой библиотеке? Они даже не считают об этом просто вопросом.Я открыл вопрос о github, но никто не ответил, я думаю, что команда готова.Поэтому я спрашиваю разработчиков в сообществе, как решить эту проблему в любом случае?
[ОБНОВЛЕНИЕ] Как любезно предложили люди, я обновляю свой сервер golang сейчас, если у кого-то еще возникла эта проблема, выможет не будет отвечать и предложения.
func HandleUserRegister(context *gin.Context) {
userAcc := context.PostForm("user_acc")
userAvatar := context.PostForm("user_avatar")
userNickName := context.PostForm("user_nick_name")
userPassword := context.PostForm("user_password")
userPhone := context.PostForm("user_phone")
userEmail := context.PostForm("user_email")
userGender := context.PostForm("user_gender")
userSign := context.PostForm("user_sign")
userType := context.PostForm("user_type")
userTypeInt, _ := strconv.Atoi(userType)
log.Infof("userAcc: %s, userNickName: %s, userPassword: %s", userAcc, userNickName, userPassword)}
Это основано на джине, и эта функция решает API.Если кто-то хочет помочь, пожалуйста, помогите мне разобраться.
ОК!Я обновляю вопрос сейчас, , потому что это действительно странно! .Я выполнил эти тесты:
- Отправка мультиформата через Flutter на сервер Django, он корректно получает данные, заполненные на китайском языке;
- Отправка мультиформной информации через Postman, сервер golang (gin) правильно переводит китайский язык;
- Публикация мультиформных данных через сервер Flutter на golang (gin) gots Китайское поле null ;
Для более подробной информации я веду заголовки с моего сервера для обоихпочтальон (нормальный) и флаттер (ненормальный):
почтальон :
request header: map[Content-Type:[multipart/form-data; boundary=--------------------------022341683711652813100488] Postman-Token:[855646d7-5bea-4b8f-b8df-81366226cd49] User-Agent:[PostmanRuntime/7.1.1] Content-Length:[422] Connection:[keep-alive] Cache-Control:[no-cache] Accept:[*/*] Accept-Encoding:[gzip, deflate]]
флаттер :
request header: map[User-Agent:[Dart/2.0 (dart:io)] Content-Type:[multipart/form-data; boundary=dart-http-boundary-.XUeYeqXpg4Yfyh8QhH1T5JB4zi_f3WxX9t7Taxhw91EFqhyki4] Accept-Encoding:[gzip] Content-Length:[574]]
Кто-нибудь может заметить разницуи дайте мне знать, как изменить это сделать сервер может получать китайские иероглифы?