Viv*_*ngh 12 java json web-services
我如何在我的webservice中使用json参数,我可以使用@PathParam获取参数但是获取json数据作为参数不知道该怎么做.
@GET
@Path("/GetHrMsg/json_data")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces(MediaType.APPLICATION_JSON)
public String gethrmessage(@PathParam("emp_id") String empid) {
Run Code Online (Sandbox Code Playgroud)
}
用什么代替@PathParam以及以后如何解析它.
ber*_*tag 15
我假设您正在讨论使用随请求发送的JSON消息正文.
如果是的话,请注意,虽然不是完全禁止,有一个GET请求应一个普遍的共识不具有请求主体.有关解释原因,请参阅" HTTP GET with request body "问题.
我之所以提到这一点,只是因为您的示例显示了GET请求.如果您正在进行POST或PUT,请继续阅读,但如果您确实在项目中执行GET请求,我建议您改为遵循kondu的解决方案.
话虽如此,要使用JSON或XML消息体,请包含一个(未注释的)方法参数,该参数本身就是表示消息的JAXB bean.
因此,如果您的邮件正文如下所示:
{"hello":"world","foo":"bar","count":123}
Run Code Online (Sandbox Code Playgroud)
然后,您将创建一个如下所示的相应类:
@XmlRootElement
public class RequestBody {
@XmlElement String hello;
@XmlElement String foo;
@XmlElement Integer count;
}
Run Code Online (Sandbox Code Playgroud)
您的服务方法如下所示:
@POST
@Path("/GetHrMsg/json_data")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public void gethrmessage(RequestBody requestBody) {
System.out.println(requestBody.hello);
System.out.println(requestBody.foo);
System.out.println(requestBody.count);
}
Run Code Online (Sandbox Code Playgroud)
哪个会输出:
world
bar
123
Run Code Online (Sandbox Code Playgroud)
有关使用JAXB使用不同类型的HTTP数据的更多信息,我建议您查看" 如何访问RESTful POST方法中的参数 "这一问题,其中包含一些非常棒的信息.
Bertag对GET的评论是正确的。但是,如果您要执行使用json数据的POST请求,则可以参考以下代码:
@POST
@Path("/GetHrMsg/json_data")
@Consumes(MediaType.APPLICATION_JSON)
public Response gethrmessage(InputStream incomingData) {
StringBuilder crunchifyBuilder = new StringBuilder();
try {
BufferedReader in = new BufferedReader(new InputStreamReader(incomingData));
String line = null;
while ((line = in.readLine()) != null) {
crunchifyBuilder.append(line);
}
} catch (Exception e) {
System.out.println("Error Parsing: - ");
}
System.out.println("Data Received: " + crunchifyBuilder.toString());
// return HTTP response 200 in case of success
return Response.status(200).entity(crunchifyBuilder.toString()).build();
}
Run Code Online (Sandbox Code Playgroud)
如需参考,请点击这里
归档时间: |
|
查看次数: |
55939 次 |
最近记录: |