Spring MVC在本地应用程序之间发布请求

时间:2015-04-08 18:48:55

标签: java spring spring-mvc cross-domain

我正在开发一个项目,我们在同一设备上有两个正在运行的应用程序。我在这些应用程序之间发送请求时遇到问题。 一个在8080执行,另一个在8081运行

这是发送请求的方法:

public void sendRequest(String device, String status) {

    RestTemplate rest = new RestTemplate();
    List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();
    messageConverters.add(new FormHttpMessageConverter());
    messageConverters.add(new StringHttpMessageConverter());
    rest.setMessageConverters(messageConverters);

    if (EnumClass.InputStatus.TRUE.getStatus().equals(status)) {
        setStatus("true");
    } else if (EnumClass.InputStatus.FALSE.getStatus().equals(status)) {
        setStatus("false");
    } else {
        setStatus(status);
    }
    MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>();
    map.add("device", device);
    map.add("status", getStatus());
    String result = rest.postForObject("http://localhost:8080/DeviceStatus", map, String.class);
    System.out.println(result);


}

这是应该接收请求的另一个应用程序的方法:

@RestController
public class DeviceController  {
    @RequestMapping(value = "DeviceStatus", method = RequestMethod.POST)
    public void ReceiveDeviceStatus(@RequestParam("device") String device,@RequestParam("status") String status){
        System.out.println("Entrou aqui");
        System.out.println("device = " + device);
        System.out.println("status = " + status);
    }
}

我收到以下消息:

 2015-04-08 15:39:11.920  WARN 6140 --- [nio-8081-exec-1] o.s.web.client.RestTemplate              : POST request for "http://localhost:8080/DeviceStatus" resulted in 405 (Method Not Allowed); invoking error handler
2015-04-08 15:39:11.931 ERROR 6140 --- [nio-8081-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.web.client.HttpClientErrorException: 405 Method Not Allowed] with root cause
org.springframework.web.client.HttpClientErrorException: 405 Method Not Allowed

接收请求的应用程序返回sequinte消息:

2015-04-08 15:12:24.555  INFO 7352 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization completed in 34 ms
2015-04-08 15:12:24.577  WARN 7352 --- [nio-8080-exec-1] o.s.web.servlet.PageNotFound             : Request method 'POST' not supported

我没有向任何网页发送信息,我只是在请求之间发送信息。有人会帮我处理这个错误吗? 当我在同一个应用程序中使用请求时,它可以正常工作。

1 个答案:

答案 0 :(得分:0)

在第二个应用程序中,ReceiveDeviceStatus需要返回一些东西。请参阅此post