1
1
package play .libs .ws ;
2
2
3
+ import java .nio .charset .Charset ;
3
4
import com .ning .http .client .*;
4
5
import com .ning .http .client .AsyncHttpClient .BoundRequestBuilder ;
5
6
import com .ning .http .client .AsyncHttpClientConfig .Builder ;
28
29
import java .net .URLDecoder ;
29
30
import java .net .URLEncoder ;
30
31
import java .util .*;
32
+ import com .ning .http .client .multipart .ByteArrayPart ;
33
+ import com .ning .http .client .multipart .FilePart ;
34
+ import com .ning .http .client .multipart .Part ;
31
35
32
36
/**
33
37
* Simple HTTP client to make webservices requests.
@@ -84,7 +88,7 @@ public WSAsync() {
84
88
}
85
89
// when using raw urls, AHC does not encode the params in url.
86
90
// this means we can/must encode it(with correct encoding) before passing it to AHC
87
- confBuilder .setUseRawUrl (true );
91
+ confBuilder .setDisableUrlEncodingForBoundedRequests (true );
88
92
httpClient = new AsyncHttpClient (confBuilder .build ());
89
93
}
90
94
@@ -159,9 +163,9 @@ protected void addQueryString(BoundRequestBuilder requestBuilder) {
159
163
}
160
164
161
165
if (value == null ) {
162
- requestBuilder .addQueryParameter (URLEncoder .encode (name , encoding ), null );
166
+ requestBuilder .addQueryParam (URLEncoder .encode (name , encoding ), null );
163
167
} else {
164
- requestBuilder .addQueryParameter (URLEncoder .encode (name , encoding ), URLEncoder .encode (value , encoding ));
168
+ requestBuilder .addQueryParam (URLEncoder .encode (name , encoding ), URLEncoder .encode (value , encoding ));
165
169
}
166
170
167
171
}
@@ -367,9 +371,7 @@ private BoundRequestBuilder prepare(BoundRequestBuilder builder) {
367
371
builder .addHeader (key , headers .get (key ));
368
372
}
369
373
builder .setFollowRedirects (this .followRedirects );
370
- PerRequestConfig perRequestConfig = new PerRequestConfig ();
371
- perRequestConfig .setRequestTimeoutInMs (this .timeout * 1000 );
372
- builder .setPerRequestConfig (perRequestConfig );
374
+ builder .setRequestTimeout (this .timeout * 1000 );
373
375
return builder ;
374
376
}
375
377
@@ -404,7 +406,8 @@ private void checkFileBody(BoundRequestBuilder builder) {
404
406
builder .addBodyPart (new FilePart (this .fileParams [i ].paramName ,
405
407
this .fileParams [i ].file ,
406
408
MimeTypes .getMimeType (this .fileParams [i ].file .getName ()),
407
- encoding ));
409
+ Charset .forName (encoding )
410
+ ));
408
411
}
409
412
if (this .parameters != null ) {
410
413
try {
@@ -414,11 +417,11 @@ private void checkFileBody(BoundRequestBuilder builder) {
414
417
if (value instanceof Collection <?> || value .getClass ().isArray ()) {
415
418
Collection <?> values = value .getClass ().isArray () ? Arrays .asList ((Object []) value ) : (Collection <?>) value ;
416
419
for (Object v : values ) {
417
- Part part = new ByteArrayPart (key , null , v .toString ().getBytes (encoding ), "text/plain" , encoding );
420
+ Part part = new ByteArrayPart (key , v .toString ().getBytes (encoding ), "text/plain" , Charset . forName ( encoding ), null );
418
421
builder .addBodyPart ( part );
419
422
}
420
423
} else {
421
- Part part = new ByteArrayPart (key , null , value .toString ().getBytes (encoding ), "text/plain" , encoding );
424
+ Part part = new ByteArrayPart (key , value .toString ().getBytes (encoding ), "text/plain" , Charset . forName ( encoding ), null );
422
425
builder .addBodyPart ( part );
423
426
}
424
427
}
@@ -481,11 +484,11 @@ private void checkFileBody(BoundRequestBuilder builder) {
481
484
Collection <?> values = value .getClass ().isArray () ? Arrays .asList ((Object []) value ) : (Collection <?>) value ;
482
485
for (Object v : values ) {
483
486
// must encode it since AHC uses raw urls
484
- builder .addQueryParameter (encode (key ), encode (v .toString ()));
487
+ builder .addQueryParam (encode (key ), encode (v .toString ()));
485
488
}
486
489
} else {
487
490
// must encode it since AHC uses raw urls
488
- builder .addQueryParameter (encode (key ), encode (value .toString ()));
491
+ builder .addQueryParam (encode (key ), encode (value .toString ()));
489
492
}
490
493
}
491
494
setResolvedContentType ("text/html; charset=" + encoding );
0 commit comments