Skip to content

Commit fbf4fde

Browse files
committed
Provide a setFollowRedirect method on the builder, to enable following redirection or not on a per request base, chaining
1 parent 204df54 commit fbf4fde

File tree

4 files changed

+26
-2
lines changed

4 files changed

+26
-2
lines changed

src/main/java/com/ning/http/client/Request.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,10 +144,17 @@ public static interface EntityWriter {
144144
*/
145145
public File getFile();
146146

147+
/**
148+
* Return the {@link followRedirects}
149+
* @return the {@link followRedirects}
150+
*/
151+
public Boolean getFollowRedirects();
152+
147153
/**
148154
* Return Per request configuration.
149155
*
150156
* @return Per request configuration.
151157
*/
152158
public PerRequestConfig getPerRequestConfig();
159+
153160
}

src/main/java/com/ning/http/client/RequestBuilder.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,4 +131,9 @@ public RequestBuilder setProxyServer(ProxyServer proxyServer) {
131131
public RequestBuilder setVirtualHost(String virtualHost) {
132132
return super.setVirtualHost(virtualHost);
133133
}
134+
135+
@Override
136+
public RequestBuilder setFollowRedirects(Boolean followRedirects) {
137+
return super.setFollowRedirects(followRedirects);
138+
}
134139
}

src/main/java/com/ning/http/client/RequestBuilderBase.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ private static final class RequestImpl implements Request {
5454
public ProxyServer proxyServer;
5555
private Realm realm;
5656
private File file;
57+
public Boolean followRedirects;
5758
private PerRequestConfig perRequestConfig;
5859

5960
public RequestImpl() {
@@ -78,6 +79,7 @@ public RequestImpl(Request prototype) {
7879
this.proxyServer = prototype.getProxyServer();
7980
this.realm = prototype.getRealm();
8081
this.file = prototype.getFile();
82+
this.followRedirects = prototype.getFollowRedirects();
8183
this.perRequestConfig = prototype.getPerRequestConfig();
8284
}
8385
}
@@ -215,6 +217,10 @@ public File getFile() {
215217
return file;
216218
}
217219

220+
public Boolean getFollowRedirects() {
221+
return followRedirects;
222+
}
223+
218224
public PerRequestConfig getPerRequestConfig() {
219225
return perRequestConfig;
220226
}
@@ -449,6 +455,11 @@ public T setRealm(Realm realm) {
449455
return derived.cast(this);
450456
}
451457

458+
public T setFollowRedirects(Boolean followRedirects) {
459+
request.followRedirects = followRedirects;
460+
return derived.cast(this);
461+
}
462+
452463
public T setPerRequestConfig(PerRequestConfig perRequestConfig) {
453464
request.perRequestConfig = perRequestConfig;
454465
return derived.cast(this);

src/main/java/com/ning/http/client/providers/NettyAsyncHttpProvider.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -773,8 +773,9 @@ public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Ex
773773
return;
774774
}
775775

776-
if (config.isRedirectEnabled()
777-
&& (statusCode == 302 || statusCode == 301)) {
776+
boolean redirectEnabled = (request.getFollowRedirects() == true
777+
|| request.getFollowRedirects() == null && config.isRedirectEnabled());
778+
if (redirectEnabled && (statusCode == 302 || statusCode == 301)) {
778779

779780
if (future.incrementAndGetCurrentRedirectCount() < config.getMaxRedirects()) {
780781

0 commit comments

Comments
 (0)