我如何使用Java来使用这个Web服务?

时间:2016-10-15 02:21:19

标签: java spring web-services jboss

这显然是一个非常简单的问题,但我无法在谷歌中找到某些信息。让我告诉你,我的计算机上只运行了一个jboss,只有这个web服务:

import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.springframework.stereotype.Controller;

@Controller
@Path("/services/test")
public class TestController 
{
    @POST
    @Path("/reg")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces({ MediaType.APPLICATION_JSON })
    public Response checkMock(String paramx)
    {
        return Response.ok("Paramx: " + paramx,MediaType.APPLICATION_JSON).build();
    }

}

好的,为了测试它,我使用“Advance REST Client”chrome插件,它非常简单,看看这张图片:

enter image description here

问题是,我怎么能这样做,但在另一个程序中有一些java代码?我需要什么物品?

祝你好运!

1 个答案:

答案 0 :(得分:0)

使用Spring RestTemplate使用Rest服务。

您需要先将RestTesmplate注册到spring上下文

<bean class="org.springframework.web.client.RestTemplate" id="restTemplate">
   <constructor-arg>               
        <bean class="org.springframework.http.client.HttpComponentsClientHttpRequestFactory"/> 
    </constructor-arg>
 </bean> 

在spring上下文中注册resttemplete之后,您可以在服务类中注入它并调用交换方法

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<?> httpEntity = new HttpEntity<Object>(payLoad, headers);

ResponseEntity<ResponseObject> response = restTemplate.exchange(ENDPOINT, HttpMethod.POST, httpEntity, ResponseObject.class);
ResponseObject resObj =  response.getBody();

此处payLoad是您的请求对象ResponseObject

要将响应直接解组到响应对象,您需要注册消息转换器

List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setClassesToBeBound(ResponseObject.class);
MarshallingHttpMessageConverter marshallingHttpMessageConverter = new MarshallingHttpMessageConverter(marshaller, marshaller);
marshallingHttpMessageConverter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_JSON, MediaType.TEXT_HTML));
messageConverters.add(marshallingHttpMessageConverter);
restTemplate.setMessageConverters(messageConverters);