Запрос XMl возвращает неверный ответ на запрос, где работает запрос json - PullRequest
0 голосов
/ 29 мая 2018

REST-сервис, который может использовать как XML, так и JSON.Где ввод JSON работает нормально.XML запрос возвращает ошибку Bad Request.Что можно сделать, чтобы принять запрос XML.

Это старый проект, использующий spring 3 & jdk 6

@RequestMapping(value = URIConstants.EST, method = RequestMethod.POST ,  consumes={"application/json", "application/xml"}, produces={"application/xml","application/json"})      
    public @ResponseBody ResponseEntity<?> getMasEstablishments(@RequestBody EstDto msaEstRequestDto) throws MasterException {

    }

Это dto, который используется для отображенияinput.
// EstDto

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class EstDto implements Serializable {
    private long regionCode;
    private String medicalReportYN;

    }

Это несколько записей в pom.xml, относящихся к отображению

Pom.xml
-----------

    <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>3.2.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.6.0</version>
        </dependency>
        <dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.7.1</version>
</dependency> 

При передаче ввода в виде json сервис возвращает результат, как и ожидалось

При запросе XML

<?xml version="1.0" encoding="UTF-8"?>
<root>

   <medicalReportYN>N</medicalReportYN>
   <regionCode>50001</regionCode>
</root>

Ошибка ответа XML

<HTML>
    <HEAD>
        <TITLE>Error 400--Bad Request</TITLE>
    </HEAD>
    ---------------------------

     <P>
                                <FONT FACE="Courier New">The request could not be understood by the server due to malformed syntax. The client SHOULD NOT repeat the request without modifications.</FONT>
                            </P>
                        </FONT>
                    </TD>
                </TR>
            </TABLE>
        </BODY>
    </HTML>

Дайте мне знать, если вам понадобятся какие-либо дополнительные сведения.Он отлично работает с существующей конфигурацией для данных JSON.Чтобы это работало для ввода XML, какие изменения нужно добавить?

1 Ответ

0 голосов
/ 29 мая 2018

Я думаю, что вам нужно, чтобы ваш XML использовал корневой элемент <estDto>, а не элемент с именем "root".

(Либо так, либо измените аннотацию на @XmlRootElement(name="root"), но другое наименованиенормальнее и понятнее.)

...