2017-11-27 3 views
0

스프링 부트를 사용하여 휴식 서비스를 만들 때 특정 경로에 대해 @GetMapping이 수행됩니다. 그 시점에서 정상적인 HTTP 요청을하려고하면 모든 종류의 예외 (예 : org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: org/apache/http/message/TokenParser 또는 오류 : org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalStateException: Target host is null 등)가 발생합니다. 나는 원칙적으로이 문제를 이해하지만 해결책을 찾지 못했습니다.은 다음과 같습니다스프링 부트의 중첩 요청

@GetMapping :

@GetMapping("/requesttest") 
    public String TestRequest(@RequestParam("requestlink") String requestlink) throws Exception { 
    String requesttext = RHRequest.getHRequest(requestlink); 
    return requesttext; 
    } 

요청 클래스 : 해결

public class RHRequest { 
    public static String getHRequest(String urlRequest) throws Exception { 

    HttpGet httpRequest = new HttpGet(urlRequest); 
    HttpClient httpClientRequest = new DefaultHttpClient(); 
    HttpContext localContextRequest = new BasicHttpContext(); 
    ResponseHandler<String> handlerRequest = new BasicResponseHandler(); 
    String responseBodyRequest = null; 
    HttpResponse responseHRequest = httpClientRequest.execute(httpRequest, localContextRequest); 
    responseBodyRequest = handlerRequest.handleResponse(responseHRequest); 
    return responseBodyRequest.toString(); 
    } 
} 
+1

어떤 버전의 Apache HttpClient를 사용하십니까? 클라이언트와 서버의 pom.xml을 제공 할 수 있습니까? –

+0

컴파일 된 그룹 : 'org.apache.httpcomponents', 이름 : 'httpclient', 버전 : '4.5.2' 컴파일 그룹 : 'org.apache.httpcomponents', 이름 : 'httpcore', 버전 : ' 4.4 '. 그리고 네, 그게 문제였습니다! –

답변

0

문제 나 샘플 코드를 연결합니다.

분명히 SSLContexts 클래스는 다른 수정과 함께 httpclient 4.4의 다른 패키지로 재배치되었습니다. 내 httpcore 버전 4.4 및 httpclient를 4.5로 업그레이드했고 문제가 해결되었습니다.

또 다른 문제는 요청에 사용 된 링크가 인코딩 된 것이 었습니다.

관련 문제