2017-05-09 933 views
0

我需要发布一个Json到服务器并获取Json结果,我使用restTemplate实现。但问题是它总是发出一个错误java.net.UnknownHostException。 控制器:使用restTemplate的post方法,错误java.net.UnknownHostException

@RequestMapping(value = "/test") 
public String test(HttpServletRequest request, HttpServletResponse response){ 
    String user=request.getParameter("txtUser"); 
    HttpSession session = request.getSession(); 
    session.setAttribute("result",accountService.findFarmsByUser(user)); 
    return "test"; 
} 

test.jsp的:

<form action="test"> 
    <input type="text" value="insert search" name="txtUser"> 
    <input type="submit" value="submit" name="btnSubmit"> 
    <input type="text" value="" name="result"> 
</form> 

服务: 我CONFIG在XML中的端口和主机。

//create request json 
    JSONObject json = new JSONObject().put(
      "input", 
      new JSONObject().put(
        "username", 
        "Administrator")); 

    // set headers 
    HttpHeaders headers = new HttpHeaders(); 
    headers.setContentType(MediaType.APPLICATION_JSON); 
    HttpEntity<String> entity = new HttpEntity<String>(json.toString(), headers); 
    headers.set(proxyHost,Host); 
    headers.set(proxyPort,Port); 

    ResponseEntity<String> loginResponse = restTemplate 
      .exchange(url, HttpMethod.POST, entity, String.class); 
    logger.info("reutrn data: {}",loginResponse); 

任何我失踪??。它适用于邮递员。我在公司工作,所以我必须配置标题的主机和端口。

错误:

org.springframework.web.client.ResourceAccessException: I/O error on POST request for "http://{myserver:port}/Thingworx/Things/{...}/Services/findUser": 
{myserver}; nested exception is java.net.UnknownHostException: {myserver} 
     at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:607) 
     at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:557) 
     at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:475) 
     at spring.web.services.impl.AccountSerivceImpl.findUser(AccountSerivceImpl.java:115) 
     at spring.web.controller.PageController.test(PageController.java:89) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method).... 
+0

你得到的答案是一样的吗? –

回答

0

可能是贵公司的代理。你可以在你的弹簧配置中定义它:

@Bean 
    public RestTemplate restTemplate(RestTemplateBuilder builder) { 

     SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory(); 
     Proxy proxy = new Proxy(Type.HTTP, new InetSocketAddress("clientproxy.corp.url", 8080)); 
     requestFactory.setProxy(proxy); 
     return builder.requestFactory(requestFactory).setConnectTimeout(5000).setReadTimeout(5000).build(); 
    }