У меня есть мультикарта. Когда я пытаюсь отправить данные на внутренний сервер с моего внешнего сервера, используя restTemplate, он возвращает код ошибки «500 Internal Server Error». Это работает для нормальной карты из класса java .util.Map. Как настроить restTemplate так, чтобы я отправлял данные мультикарты Google guava поверх?
Это мой код фронтенд-сервера при весенней загрузке.
import com.google.common.collect.Multimap;
...
try
{
RestTemplate rt = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
List<MediaType> acceptList = new ArrayList<>();
acceptList.add(MediaType.APPLICATION_JSON);
headers.setAccept(acceptList);
Multimap<String, byte[]> arrayMap = ArrayListMultimap.create();
arrayMap.put("test", "hello".getBytes());
arrayMap.put("title", "meow".getBytes());
arrayMap.put("body", "A powerful tool for building web apps.".getBytes());
HttpEntity<Multimap<String, byte[]>> uploadEntity = new HttpEntity<>(arrayMap, headers);
ResponseEntity<String> response = rt.postForEntity(uri, uploadEntity, String.class);
System.out.println(response);
}
catch (HttpClientErrorException e)
{
/**
*
* If we get a HTTP Exception display the error message
*/
logger.error("error http client: " + e.getResponseBodyAsString());
}
catch(Exception e)
{
logger.error("error: " + e.getMessage());
}
Это мой контроллер Backend-сервера, где он получает входящие данные с моего веб-сервера.
import com.google.common.collect.Multimap;
...
@PostMapping(path="/rh2lev", consumes = "application/json", produces = "application/json")
public String setup(@RequestBody Multimap<String, byte[]> uploadIndex)
{
System.out.println(uploadIndex);
return "everything ok";
}