1

問題: RestEasy に自動的にリダイレクトをたどらせることができません

RESTful JSON サービスを利用するために、RestEasy クライアント フレームワーク 2.3.4 を使用しています。私はrest easy client spring integrationを使用しています。Spring RestClientProxyFactoryBean を使用してサービスを作成していない場合は、クライアント リクエスト ファクトリに自動リダイレクト フラグを設定します。

HTTP クライアントでフォロー リダイレクトを設定しようとしましたが、デバッグに続いて、Rest Easy によってこの値が false にオーバーライドされていることがわかります。

ソース コードを見ると、 Spring プロキシ ファクトリが作成するクライアント インボーカーにアクセスする必要がありますが、これは公開されていません。

これは非常に一般的なタスクのようなものですが、確かに何か不足していますか? 乾杯。

4

1 に答える 1

0

proxybean ファクトリにカスタム クライアント エグゼキュータを設定できるはずですが、それも機能しませんでした。

              @Override   
                    public ClientRequest createRequest(String uriTemplate) {    
                    ClientRequest clientRequest = new ClientRequest(uriTemplate, this); 
                    clientRequest.followRedirects(true);    
                    return clientRequest;   
                    }   

                    @Override   
                    public ClientRequest createRequest(UriBuilder uriBuilder) { 
                    ClientRequest clientRequest = super.createRequest(uriBuilder);  
                    clientRequest.followRedirects(true);    
                    return clientRequest;   
                    }   
                    }
     proxyFactoryBean.setClientExecutor(new FollowRedirectsClientExecutor()); 

In end extending and overriding the Http client (in this case HTTP Component) was needed to make this work e.g. 

public HttpUriRequest followRedirects(HttpUriRequest request) { 

            if (logger.isDebugEnabled()) {  
            logger.debug("Setting allow redirects");    
            }   

            HttpParams p = request.getParams(); 
            HttpClientParams.setRedirecting(p, true);   
            request.setParams(p);   

            return request; 
            }
            }
            ...

@Override   
public <T> T execute(HttpUriRequest request, ResponseHandler<? extends T> responseHandler) throw
s IOException,  
        ClientProtocolException {   ClientProtocolException {   
            request = followRedirects(request); 
        ...
于 2013-08-10T01:49:04.157 に答える