2016-06-03 5 views
0

Spring MVC에서 CORS를 시작하기 위해 간단한 엔드 포인트를 만들었습니다.Spring MVC CORS : Connection refused

컨트롤러 :

@Controller 
@RequestMapping(value = "/api") 
public class ApiController { 

    @Autowired 
    ItemService itemService; 

    @RequestMapping(value = "/items", method = RequestMethod.GET, produces = {MediaType.APPLICATION_JSON_VALUE}) 
    HttpEntity<PagedResources<ItemResource>> items(Pageable pageable, PagedResourcesAssembler assembler) { 
     org.springframework.data.domain.Page<Item> items = itemService.findAll(pageable); 
     return new ResponseEntity<PagedResources<ItemResource>>(assembler.toResource(items), HttpStatus.OK); 
    } 

} 

구성 :

$.ajax({ 
    type: 'GET', 
    url: "http://test.dev:8080/api/items" 
}).done(function(result) { 
    console.log(result); 
}).fail(function(jqXHR){ 
    console.log(jqXHR); 
}); 

시험 사용 폭식 (PHP) :

$client = new \GuzzleHttp\Client(); 
$response = $client->get('http://test.dev:8080/api/items'); 
나는 JQuery와 AJAX를 사용하여 내 끝 지점을 테스트 그리고
@Override 
    public void addCorsMappings(CorsRegistry registry) { 
     registry.addMapping("/api/**") 
       .allowedOrigins("*") 
       .allowedMethods("*") 
       .allowedHeaders("*") 
       .allowCredentials(false) 
       .maxAge(3600); 
    } 

JQuery AJAX와 Guzzle이 완벽하게 작동합니다.

org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http://test.dev:8080/api/items":Connection refused: connect; nested exception is java.net.ConnectException: Connection refused: connect 

테스트 호출을 사용하여 RestTemplate :

RestTemplate restTemplate = new RestTemplate(); 
return restTemplate.getForObject("http://test.dev:8080/api/items", SampleResponse.class); 

내가이 문제를 해결하기 위해 시작해야 내 API와 다른 테스트를 만들 수있는 새로운 스프링 MVC 응용 프로그램을 만들 때, 나는 오류가 발생했습니다? 미리 감사드립니다!

답변

0

JAX-RS 클라이언트 API을 사용하기로 결정했습니다.

의 pom.xml :

<!-- http://mvnrepository.com/artifact/javax.ws.rs/javax.ws.rs-api --> 
    <dependency> 
     <groupId>javax.ws.rs</groupId> 
     <artifactId>javax.ws.rs-api</artifactId> 
     <version>2.0.1</version> 
    </dependency> 

    <!--resteasy--> 
    <dependency> 
     <groupId>org.jboss.resteasy</groupId> 
     <artifactId>resteasy-client</artifactId> 
     <version>3.0.17.Final</version> 
    </dependency> 

    <dependency> 
     <groupId>org.jboss.resteasy</groupId> 
     <artifactId>resteasy-jackson-provider</artifactId> 
     <version>3.0.17.Final</version> 
    </dependency> 

통화 웹 서비스를 사용하여 JAX-RS :

Client client = ClientBuilder.newClient(); 
SampleResponse items = client.target("http://test.dev:8080/api/items") 
        .request(MediaType.APPLICATION_JSON) 
        .get(new GenericType<SampleResponse>(){}); 

client.close();