2017-01-17 10 views
0

ResteasyClientBuilder를 사용하여 만든 클라이언트가 나가는 HTTP 요청을 기록하는 방법이 있습니까?나가는 JBoss EAP 7/RESTEasy 요청

Google 서비스 중 하나에서 요청한 서비스에 대한 요청에 문제가있어 RESTEasy/JBoss EAP 7이 생성/전송하고있는 실제 HTTP 요청 수의 헤더, 본문 등을보고 싶습니다.

+0

다음과 같이 web.xml을 을 편집하여 수행 할 수 있습니다

같은? 응답 구현을위한 : PostProcessInterceptor – gladiator

+0

내 서비스가 헤더와 본문의 유효성을 검사하기 위해 만드는 http 요청을 기록하고 싶습니다. 우리는 서버에서 tcp 덤프를 수행하여이 정보를 얻을 수있었습니다. 그러나 호출 된 서비스가 https를 사용하기 때문에 캡처를 읽을 수 있도록 먼저 전달할 프록시를 만들어야했습니다. 우리가 나가는 요청을 그냥 기록 할 수 있다면 훨씬 더 좋을 것입니다. – sdoca

+0

일 수 있습니다. http://blogs.adobe.com/livecycle/2011/10/how-to-enable-jboss-to-log-http-payloads.html 도움이 되겠지만 모든 요청에 ​​적용됩니다. 실행 중 서버가 디버그 모드에서도 모든 요청을 인쇄하지만 너무 무거움 – gladiator

답변

0

당신이

여기
Client client = ClientBuilder.newClient(); 
    String url = "https://translate.googleapis.com/translate_a/single?client=gtx&sl=" + "en" + "&tl=" + "hi" 
      + "&dt=t&q=" + URLEncoder.encode(msg); 
    client.register(new LoggingFilter()); 

client.register 아래 클라이언트 사용에서 요청을 기록하고자하는 경우 (새 LoggingFilter());이 로깅을하면 로거를 전달할 수 있습니다.

출력

Jan 20, 2017 1:13:48 PM org.glassfish.jersey.filter.LoggingFilter log 
INFO: 1 * Sending client request on thread http-bio-127.6.45.129-8080-exec-2 
    https://translate.googleapis.com/translate_a/single?client=gtx&sl=en&tl=hi&dt=t&q=ad 
Jan 20, 2017 1:13:48 PM org.glassfish.jersey.filter.LoggingFilter log 
INFO: 1 * Sending client request on thread http-bio-127.6.45.129-8080-exec-2 
1 > GET https://translate.googleapis.com/translate_a/single?client=gtx&sl=en&tl=hi&dt=t&q=ad 
Jan 20, 2017 1:13:51 PM org.glassfish.jersey.filter.LoggingFilter log 
INFO: 1 * Client response received on thread http-bio-127.6.45.129-8080-exec-2 
1 < 200 
1 < Accept-Ranges: none 
1 < Access-Control-Allow-Origin: * 
1 < Alt-Svc: quic=":443"; ma=2592000; v="35,34" 
1 < Cache-Control: no-cache, no-store, must-revalidate 
1 < Content-Disposition: attachment; filename="f.txt" 
1 < Content-Type: application/json; charset=UTF-8 
1 < Date: Fri, 20 Jan 2017 07:43:51 GMT 
1 < Expires: Fri, 01 Jan 1990 00:00:00 GMT 
1 < Pragma: no-cache 
1 < Server: HTTP server (unknown) 
1 < Transfer-Encoding: chunked 
1 < Vary: Accept-Encoding 
1 < X-Content-Type-Options: nosniff 
1 < X-Frame-Options: SAMEORIGIN 
1 < X-XSS-Protection: 1; mode=block 
당신은 당신의 서비스에서 응답을 기록 할 또는 사용자가 만든 요청할
<web-app> 
    <display-name>Archetype Created Web Application</display-name> 
    <servlet> 
    <servlet-name>Jersey Web Application</servlet-name> 
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 

    <init-param> 
     <param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name> 
     <param-value>com.sun.jersey.api.container.filter.LoggingFilter</param-value> 
    </init-param> 
    <init-param> 
     <param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name> 
     <param-value>com.sun.jersey.api.container.filter.LoggingFilter</param-value> 
    </init-param> 

<init-param> 
     <param-name>javax.ws.rs.Application</param-name> 
     <param-value>com.webspherenotes.rest.ContactApplication</param-value> 
    </init-param> 

    </servlet> 
    <servlet-mapping> 
    <servlet-name>Jersey Web Application</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 

</web-app> 
+0

도움을 주셔서 감사합니다. 그것은 코드 변경이며 JBoss에서 요청의 로깅을 설정/해제하는 무언가를 설정할 수 있기를 바랬습니다. – sdoca

+0

init param의 응답 클래스를 편집하면 최신 저지 버전 – gladiator

+0

이 다를 수 있습니다. web.xml을 업데이트하는 것은 코드를 변경하는 것과 같습니다. 응용 프로그램의 빌드/배포가 필요합니다. 이전에 언급했듯이 JBoss EAP에서 로깅을 켜거나 끄는 일반적인 방법을 찾고있었습니다. 또한 JBoss는 저지가 아닌 RESTEasy를 사용합니다. – sdoca