2017-05-09 1 views
0

Je dois publier un Json sur un serveur et obtenir le résultat JSON, que j'utilise restTemplate à mettre en œuvre. Mais le problème est toujours de faire une erreur java.net.UnknownHostException. Controller:Post méthode avec restTemplate, erreur 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> 

Service: Je configuration du port et de l'hôte en 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); 

Tout ce qui me manque ?? Cela fonctionne très bien avec le facteur. Je travaille en entreprise, donc je dois configurer l'hôte et le port pour l'en-tête.

Erreur:

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

Avez-vous reçu la réponse à la même question? –

Répondre

0

peut-être un proxy dans votre entreprise. Vous pouvez le définir dans votre config de printemps:

@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(); 
    }