这几天由于一个需求需要开发RestFul接口,在开发时过程中,Get请求比较简单也比较顺利,但时在开发Post请求,----客户端以JSON格式向服务端提交数据(客户端可能一次请求提交一条哦数据,也可能一次提价多条数据)时,遇到了一个难题,折腾了2天终于解决,在此记录下 一.客户端传递单条JSON数据
服务端代码
public class IptvStblogResource {
//建立日志
private static Logger log = Logger.getLogger(IptvStblogResource.class);
@POST
@Path("/SyncInterface")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public SyncResponse syncStbLogsFromYniptvToRedisQueue(SyncRequest syncRequest){
SyncResponse response = new SyncResponse();
//初始化
String resultCode = "0";
String resultInfo = "OK";
log.debug("ID="+syncRequest.getId());
log.debug("STBID="+syncRequest.getStbid());
response.setRespCode(resultCode);
response.setRespDesc(resultInfo);
return response;
}
}
这里注意三个地方:@Consumes(MediaType.APPLICATION_JSON)----指明服务接受的参数类型为JSON
@Produces(MediaType.APPLICATION_JSON)-----指明服务返回的是JSON
SyncRequest syncRequest-----方法的入参是一个类的对象
(2)客户端代码
public class TestRestful {
final static String serhost = "http://localhost:8080/RESTfulWS/rest/SyncIptvStbLogService";
final static String synciptvlog = serhost + "/SyncInterface";
static Client client = Client.create();
static ObjectMapper mapper = new ObjectMapper();
public static void main(String[] args) throws JsonGenerationException, JsonMappingException, IOException{
System.out.println();
mapper.writeValueAsString(TestSyncStbLogs());
}
public static SyncResponse TestSyncStbLogs(){
long begin = System.cur