Я пытаюсь отправить объект в https://api.aftership.com/v4, но у меня возникла проблема:
org.springframework.web.client.HttpClientErrorException$BadRequest: 400 Bad Request
at org.springframework.web.client.HttpClientErrorException.create(HttpClientErrorException.java:79) ~[spring-web-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:97) ~[spring-web-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:79) ~[spring-web-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63) ~[spring-web-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:777) ~[spring-web-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:735) ~[spring-web-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:669) ~[spring-web-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:578) ~[spring-web-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at api.aftership.tracking.TrackingController.addTracking(TrackingController.java:70) ~[classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_151]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_151]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_151]
at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_151]
Мой исходный код:
@Организация
@JsonIgnoreProperties(ignoreUnknown = true)
public class Trackings {
private String tracking_number;
public Trackings() {
}
public Trackings(String tracking_number) {
super();
this.tracking_number = tracking_number;
}
@HeaderConfig
public class HttpHeaderConfigs {
private static final HttpHeaders headers = new HttpHeaders();
public HttpHeaderConfigs() {
}
public static HttpHeaders HttpHeaderConfig() {
headers.set("aftership-api-key", "e7f28250-889d-48ce-80a1-52f4d16XXXX");
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
return headers;
}
public HttpHeaders getHeaders() {
return headers;
}
}
@ Функция для POST
@RequestMapping("/trackings/add")
public void addTracking() {
final String uri = "https://api.aftership.com/v4/trackings";
Trackings tracking = new Trackings();
tracking.setTracking_number("783518514479");
RestTemplate restTemplate = new RestTemplate();
HttpEntity<Trackings> entity = new HttpEntity<Trackings>(tracking, HttpHeaderConfig());
ResponseEntity<String> response = restTemplate.exchange(uri, HttpMethod.POST, entity, String.class);
System.out.println(response.getBody());
}
И мой результат, который я получаю при вводе http: // локальный: 8080 / отслеживание / добавить:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Sat Nov 24 23:20:59 ICT 2018
There was an unexpected error (type=Internal Server Error, status=500).
400 Bad Request
Я пытался это решить. Пожалуйста, помогите мне это исправить !!! <3
Как я могу получить журнал Spring? Отправляю по объекту.
Я пробую @PostMapping ("/ trackings / add") и получаю "java.util.NoSuchElementException: значение отсутствует"
См. stackoverflow.com/questions/7952154/…
Затем вы можете изменить свое отображение примерно так: @RequestMapping (path = "/ trackings / add", method = RequestMethod.P ost). у вас неправильно настроено отображение
@PostMapping доступен начиная с Spring 4.3 и далее, поэтому, если вы хотите использовать пост-маппинг, обновите свою весеннюю версию до 4.3. + Или вы можете просто использовать предложенный подход lucid, например @RequestMapping (path = "/ trackings / add", method = RequestMethod. P ost)
@RequestMapping (path = "/ trackings / add", method = RequestMethod.P ost) return Нет значения
Я использовал LoggingRequestInterceptor (), на который ссылается Робин, и я получил эту «ошибку ввода-вывода при запросе POST для« api.aftership.com/v4/trackings »: сервер вернул код ответа HTTP: 400 для URL: api.aftership.com/v4/trackings; вложенное исключение - java.io.IOException: сервер вернулся Код ответа HTTP: 400 для URL: api.aftership.com/v4/trackings "




[Aftership API] [1] Вам необходимо сериализовать объект Trackings JSON и добавить его методы получения и установки:
@JsonIgnoreProperties(ignoreUnknown = true)
public class MainTracking implements Serializable {
private Tracking Tracking;
public String getTracking() {
return tracking;
}
public void setTracking(Tracking tracking) {
this.tracking = tracking;
}
}
@JsonIgnoreProperties(ignoreUnknown = true)
public class Tracking implements Serializable {
private String tracking_number;
public Tracking() {
}
public Tracking(String tracking_number) {
setTracking_number(tracking_number);
}
public String getTracking_number() {
return tracking_number;
}
public void setTracking_number(String tracking_number) {
this.tracking_number = tracking_number;
}
}
И обновите свой контроллер:
@RequestMapping("/trackings/add")
public void addTracking() {
final String uri = "https://api.aftership.com/v4/trackings";
MainTracking mainTracking = new MainTracking();
Tracking tracking = new Tracking();
tracking.setTracking_number("7835112328"); // Be careful with this number has generated different every time.!!
mainTracking.setTracking(tracking);
RestTemplate restTemplate = new RestTemplate();
HttpEntity<MainTracking> entity = new HttpEntity<MainTracking>(mainTracking, HttpHeaderConfig());
ResponseEntity<String> response = restTemplate.exchange(uri, HttpMethod.POST, entity, String.class);
System.out.println(response.getBody());
}
Aftership API просто требует параметра tracking_number, я пробовал его в приложении Postman!
Я действительно застрял на этом дерьме, не понимаю, почему не работает: ((
Обновил !! @AnVanNguyen, пожалуйста, убедитесь, что у вас есть следующие соображения, братан!
Почему мое приложение Spring не может добавить аннотацию @Entity?
поскольку у вас нет зависимости от JPA, если вы добавите зависимость, вы можете ее добавить.
Привет, братан @AnVanNguyen, я сделал тест, и он работает. вы забыли добавить его в объект ... я обновил его своим ответом!
Пожалуйста, проверьте взгляд
Могу я получить ваш код на гитхабе? Я новичок в API: ((
Конечно, но вам нужно поделиться своим репозиторием, поэтому я собираюсь его обновить :) @AnVanNguyen
Оки, давай сделаем это. Пожалуйста, дайте мне ссылку на github
Вы тестировали мое приложение? @ jonathan-johx
Да, я сделал. позволь мне проверить. @ AnVanNguyen
done @AnVanNguyen Надеюсь, мой ответ отмечен как решение.
@AnVanNguyen Я сделал запрос на перенос вашего репо с моими изменениями. С уважением ..: V просто проголосовать :)
Вот дерьмо, ты это исправишь! Просто нужно изменить tracking_number, и все заработает! Большое спасибо братан !!!!
Привет, Johx @ jonathan-johx, мне действительно нужна ваша помощь, после решения метода POST я что-то делаю с PUT httpmethod, но он возвращает те же ошибки. Я пробовал что угодно, но не могу, проверьте мой код в github. Большое спасибо, братан!
@AnVanNguyen Хорошо, попробую посмотреть позже
Ты спас мне день !!
@AnVanNguyen Извините, я не смогу помочь сегодня, выходные, я так думаю ...
Можете ли вы сделать журнал Spring, какой JSON он отправляет? Я думаю, вы отправляете неправильный JSON.