Springboot 2.1.7.RELEASE REST API возвращает 406 в WAS Liberty версии 18.0.0.8 (wlp-javaee8-18.0.0.4) - PullRequest
0 голосов
/ 07 октября 2019

Я развертываю приложение Springboot 2.1.7 в качестве войны на wlp-javaee8-18.0.0.4 и получаю 406 httpstatus при вызове моей конечной точки отдыха от почтальона

Мой сервис:

@PostMapping(path = "/authentication/schema", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<String> hello(@RequestHeader("key") String key) {
    HttpHeaders headers = new HttpHeaders();
    headers.add("X-KEY", schemaPair.getValue());
    headers.SetContentType(MediaType.APPLICATION_JSON);

    return new ResponseEntity<>("hello", headers, HttpStatus.OK);
}

От почтальона я указываю ContentType и Accept заголовки следующим образом: - Content-Type: application / json - Accept: application / json

Я также пробовал: - Content-Type: / -Примите: /

Отладка Springboot показывает, что проблемы связаны с сервлетом Java. Чтобы быть точным, это здесь:

package org.springframework.http.server;

import javax.servlet.http.HttpServletResponse;

public class ServletServerHttpResponse implements ServerHttpResponse {

    private final HttpServletResponse servletResponse;

    // after code

    @Override
    @Nullable
    public String getFirst(String headerName) {
        String value = servletResponse.getHeader(headerName); // problem here
        /*
        * this method servletResponse.getHeader(headerName) 
        * returns text/html while my contenttype is application/json
        */
        if (value != null) {
            return value;
        }
        else {
            return super.getFirst(headerName);
        }
    }

    // after code
}

Любая идея, пожалуйста

Большое спасибо

1 Ответ

0 голосов
/ 07 октября 2019

Проблема заключалась в том, что фильтр переопределял мой тип контента в сервлете websphere liberty. Я удалил фильтр и все прошло нормально

На tomcat мой фильтр работает

Я не знаю, если это ошибка или нет!

...