我正在创建一个从浏览器和Java客户端调用的Jersey API服务。代码在从同一个域调用时工作,但是当从其他域调用它时它不起作用,所以我创建了一个尝试用JSONWithPadding包装responseJson String。它仍然发送正常的响应,而不是我正在寻找的响应。服务的实施是泽西岛(Maven Path Below:
) <dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-servlet</artifactId>
<version>${jersey.version}</version>
</dependency>
的示例代码
@Path("/v1/sample")
@Produces({"application/json"})
public class SampleService
{
@GET
@Path("/service1")
@Produces({"application/json"})
public Response notWorking(@Context UriInfo uriInfo)
{
String result = "{\"name\":\"John Johnson\",\"street\":\"Oslo West 16\",\"phone\":\"555 1234567\"}";
String callbackStr = (String)uriInfo.getQueryParameters().getFirst("callback");
System.out.println("callbackStr ="+callbackStr);
JSONWithPadding paddedJson = new JSONWithPadding(result, callbackStr);
return Response.status(200).entity(paddedJson).build();
}
}
致电1:http://localhost:8080/myapi/v1/sample/service1 回复:{“名称”:“约翰逊”,“街道”:“奥斯陆西16”,“电话”:“555 1234567”}
致电2:http://localhost:8080/myapi/v1/sample/service1?callback=? 回复:{“名称”:“约翰逊”,“街道”:“奥斯陆西16”,“电话”:“555 1234567”}
在电话2中:我正在寻找的响应是 ?({“name”:“John Johnson”,“street”:“Oslo West 16”,“phone”:“555 1234567”})
当然我错过了一些东西,但无法理解。请有人帮忙
此致 阿米特
答案 0 :(得分:1)
在你的例子中有几件事要处理。
您可以直接返回JSONWithPadding对象。
@GET
@Path("/service1")
@Produces({"application/javascript"})
public JSONWithPadding nowItWorks(@QueryParam("callbackStr") String callbackStr, @Context UriInfo uriInfo)
{
String result = "{\"name\":\"John Johnson\",\"street\":\"Oslo West 16\",\"phone\":\"555 1234567\"}";
System.out.println("callbackStr ="+callbackStr);
return new JSONWithPadding(result, callbackStr);
}
希望这有帮助。