我正在開始使用Java,所以期待這是一個非常業餘的問題。我正在修改Neo4j的非託管擴展模板。Jersey,JSON API,「415不支持的媒體類型」
我已經定義了一個NTReport
類,它被包含在裏面,一切都很愉快地編譯。對內容類型設置爲application/json
的端點進行發佈會在主題中返回錯誤。
我也有對象中定義的getStatus
方法。
package org.neo4j.example.unmanagedextension;
import org.codehaus.jackson.map.ObjectMapper;
import org.neo4j.cypher.javacompat.ExecutionEngine;
import org.neo4j.cypher.javacompat.ExecutionResult;
import org.neo4j.graphdb.*;
import org.neo4j.helpers.collection.IteratorUtil;
import org.neo4j.server.database.CypherExecutor;
import org.neo4j.example.unmanagedextension.NTReport;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Consumes;
import javax.ws.rs.Produces;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.MediaType;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@Path("/service")
public class MyService {
@POST
@Consumes({MediaType.APPLICATION_JSON})
@Path("/reports")
public String getReportJava(NTReport report) {
return "Report params: " + report.getMetrics();
}
}
這裏的NTReport
:
package org.neo4j.example.unmanagedextension;
public class NTReport {
private String endpoints;
private String resolution;
private String metrics;
public String getEndpoints() {
return this.endpoints;
}
public String getResolution() {
return this.resolution;
}
public String getMetrics() {
return this.metrics;
}
}
我的理解是,通過使用@Consumes
,它應該在JSON鍵映射到類的同名變量。我錯了嗎?
當我使用@GET
創建基本端點時,我會得到預期的響應。
ALSO,this後似乎描述相同的確切問題,所以我會檢查它。
我發現另一個錯誤日誌,似乎表明它不知道如何處理JSON畢竟。
Feb 11, 2015 5:46:19 PM com.sun.jersey.spi.container.ContainerRequest getEntity
SEVERE: A message body reader for Java class org.neo4j.example.unmanagedextension.NTReport, and Java type class org.neo4j.example.unmanagedextension.NTReport, and MIME media type application/json was not found.
The registered message body readers compatible with the MIME media type are:
*/* ->
com.sun.jersey.core.impl.provider.entity.FormProvider
com.sun.jersey.core.impl.provider.entity.StringProvider
com.sun.jersey.core.impl.provider.entity.ByteArrayProvider
com.sun.jersey.core.impl.provider.entity.FileProvider
com.sun.jersey.core.impl.provider.entity.InputStreamProvider
com.sun.jersey.core.impl.provider.entity.DataSourceProvider
com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$General
com.sun.jersey.core.impl.provider.entity.ReaderProvider
com.sun.jersey.core.impl.provider.entity.DocumentProvider
com.sun.jersey.core.impl.provider.entity.SourceProvider$StreamSourceReader
com.sun.jersey.core.impl.provider.entity.SourceProvider$SAXSourceReader
com.sun.jersey.core.impl.provider.entity.SourceProvider$DOMSourceReader
com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$General
com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$General
com.sun.jersey.core.impl.provider.entity.XMLRootObjectProvider$General
com.sun.jersey.core.impl.provider.entity.EntityHolderReader
請問您可以添加NTReport嗎? – lifus 2015-02-11 21:24:32
什麼是您的JSON到Java綁定提供程序? – lifus 2015-02-11 21:50:39
此外,我的帖子中增加了更多的代碼。 – subvertallchris 2015-02-11 21:53:11