Как я могу отправить объект карты в многочастном запросе во флаттере - PullRequest
0 голосов
/ 29 мая 2019

Здесь я пытаюсь отправить карту объектов в многокомпонентном запросе, но мой запрос выполняется в виде строки, а не в формате JSON, пожалуйста, предложите мне сделать правильный запрос.Заранее спасибо.

Я пробовал составной запрос, но мой запрос должен быть в правильной форме.

var getApiUrl = 'http://malik-env-test.ap-south-1.elasticbeanstalk.com/webapi/post/create';

  Map userData = {

    "creator": {
      "creatorId": "298",
      "createDate": "2018-12-21 20:44:45.8"
    },
    "info": "$campusInfo",
    "title": "$eventName",
    "postCampusId": "5642"

  };

Uri uri = Uri.parse(getApiUrl);
   http.MultipartRequest request = new http.MultipartRequest('POST', uri);
   request.fields['creator'] = userData['creator'];
   request.fields['info'] = '$campusInfo';
   request.fields['title'] = '$eventName';
   request.fields['postCampusId'] = '5642';
   request.files.add(await http.MultipartFile.fromPath('image_file1', imagePath, contentType: new MediaType('application', 'x-tar')));
//   var body = json.encode(request);
   print(request);
   http.StreamedResponse response = await request.send();
   String jsonData = response.toString();
   print(jsonData);ddd

Ответы [ 2 ]

1 голос
/ 31 мая 2019
   var userData = json.encode({
     "creator": {
           "creatorId": "298",
            "createDate": "2018-12-21 20:44:45.8"
       },
      "info": "$campusInfo",
      "title": "$eventName",
      "postCampusId": "5642"
    });
    var client = http.Client();
    client
        .post('https://'+ url ,
            headers: {
              'content-type': 'application/json',
            },
            body: userData )
0 голосов
/ 29 мая 2019

Попробуйте:

request.fields['userData'] = json.encode(userData);

Вам необходимо узнать у спецификатора API или владельца сервера, какое имя поля использовать для json. Я предположил userData.

Если вы хотите контролировать тип носителя, кодировку и т. Д., Добавьте его в файл следующим образом:

  request.files.add(
    http.MultipartFile.fromBytes(
      'the_form_field name',
      utf8.encode(json.encode(userData)),
      contentType: MediaType(
        'application',
        'json',
        {'charset': 'utf-8'},
      ),
    ),
  );
...