@@ -363,26 +363,35 @@ else if (queryStart < lastChar && baseUrl.charAt(lastChar) != '&')
363
363
}
364
364
365
365
private static StringBuilder addParam (final Object key , Object value ,
366
- final StringBuilder result ) {
366
+ final StringBuilder result ) throws HttpRequestException {
367
+ return addParam (key , value , result , CHARSET_UTF8 );
368
+ }
369
+
370
+ private static StringBuilder addParam (final Object key , Object value ,
371
+ final StringBuilder result , String charset ) throws HttpRequestException {
367
372
if (value != null && value .getClass ().isArray ())
368
373
value = arrayToList (value );
369
374
370
- if (value instanceof Iterable <?>) {
371
- Iterator <?> iterator = ((Iterable <?>) value ).iterator ();
372
- while (iterator .hasNext ()) {
373
- result .append (key );
374
- result .append ("[]=" );
375
- Object element = iterator .next ();
376
- if (element != null )
377
- result .append (element );
378
- if (iterator .hasNext ())
379
- result .append ("&" );
375
+ try {
376
+ if (value instanceof Iterable <?>) {
377
+ Iterator <?> iterator = ((Iterable <?>) value ).iterator ();
378
+ while (iterator .hasNext ()) {
379
+ result .append (URLEncoder .encode (key .toString (), charset ));
380
+ result .append ("[]=" );
381
+ Object element = iterator .next ();
382
+ if (element != null )
383
+ result .append (URLEncoder .encode (element .toString (), charset ));
384
+ if (iterator .hasNext ())
385
+ result .append ("&" );
386
+ }
387
+ } else {
388
+ result .append (URLEncoder .encode (key .toString (), charset ));
389
+ result .append ("=" );
390
+ if (value != null )
391
+ result .append (URLEncoder .encode (value .toString (), charset ));
380
392
}
381
- } else {
382
- result .append (key );
383
- result .append ("=" );
384
- if (value != null )
385
- result .append (value );
393
+ } catch (UnsupportedEncodingException e ) {
394
+ throw new HttpRequestException (e );
386
395
}
387
396
388
397
return result ;
0 commit comments