这显然是一个非常简单的问题,但我无法在谷歌中找到某些信息。让我告诉你,我的计算机上只运行了一个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插件,它非常简单,看看这张图片:
问题是,我怎么能这样做,但在另一个程序中有一些java代码?我需要什么物品?
祝你好运!
答案 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);