0
我使用maven,Spring,Apache CXF創建了一個webapp。CXF rest服務 - XML工作正常但不是JSON
如果我將服務設置爲生成XML,所有工作正常,我會得到結果。 如果我將服務設置爲產品JSON,則不會得到任何結果。
這是POM文件依賴關係:
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>3.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
<version>2.7.9</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-jaxrs</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.13</version>
</dependency>
</dependencies>
這是彈簧上下文文件:
<context:component-scan base-package="com.training" />
<bean id="jsonProvider" class="org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider"/>
<jaxrs:server id="jaxrsServer" address="/">
<jaxrs:providers>
<ref bean="jsonProvider"/>
</jaxrs:providers>
<jaxrs:serviceBeans>
<ref bean="libraryServices"/>
</jaxrs:serviceBeans>
</jaxrs:server>
這是服務
@Path("/services")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public interface LibraryServices {
@GET
@Path("/book/{id}")
public Response getBook(@PathParam("id") Integer bookId);
}
這是響應類(有吸氣劑和安裝者)
@XmlRootElement
public class Response {
private boolean success;
private String methodName;
private Object object;
}
ofcourse還有一個服務的實現。
使用XML,我得到很好的回答:
<response>
<methodName>getBook</methodName>
<success>false</success>
</response>
使用JSON我什麼也沒得到。
我認爲這可能是一個移民問題。
請幫我 問候,伊
編輯:
我發現了一個簡單的GET我收到500個狀態。試圖創建一個「外面的攔截器」來了解正在發生的事情,但一切似乎都沒問題。我甚至可以在消息的內容中看到我想要返回的對象。
我只使用一個簡單的GET調用。進入服務器並可以調試代碼。 我用隨機字段生成一個簡單的集合,然後代碼完成,我根本得不到任何數據。
我生成了一個簡單的項目來模擬這個問題,但我無法在這裏加載它。
你能告訴你如何將您的需求?你是否正在發送一個MIME類型爲'application/json'的Accept頭。當你得到空的結果時,你確定沒有例外嗎? – helderdarocha
很難說,沒有更多的信息。當您從GET獲得500響應時,是否還有任何附加的響應信息?此外,如果您向我們展示更多關於helderdarocha建議的請求,這將有所幫助。當發生這種情況時,您是否在服務器端看到任何錯誤? –