View Javadoc
1   /*
2    * ====================================================================
3    * Licensed to the Apache Software Foundation (ASF) under one
4    * or more contributor license agreements.  See the NOTICE file
5    * distributed with this work for additional information
6    * regarding copyright ownership.  The ASF licenses this file
7    * to you under the Apache License, Version 2.0 (the
8    * "License"); you may not use this file except in compliance
9    * with the License.  You may obtain a copy of the License at
10   *
11   *   http://www.apache.org/licenses/LICENSE-2.0
12   *
13   * Unless required by applicable law or agreed to in writing,
14   * software distributed under the License is distributed on an
15   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16   * KIND, either express or implied.  See the License for the
17   * specific language governing permissions and limitations
18   * under the License.
19   * ====================================================================
20   *
21   * This software consists of voluntary contributions made by many
22   * individuals on behalf of the Apache Software Foundation.  For more
23   * information on the Apache Software Foundation, please see
24   * <http://www.apache.org/>.
25   *
26   */
27  package org.apache.http.client.utils;
28  
29  
30  import org.apache.http.Consts;
31  import org.apache.http.NameValuePair;
32  import org.apache.http.client.methods.HttpUriRequest;
33  import org.apache.http.client.methods.RequestBuilder;
34  import org.apache.http.message.BasicNameValuePair;
35  import org.junit.Assert;
36  import org.junit.Test;
37  
38  import java.net.URLEncoder;
39  import java.nio.charset.Charset;
40  
41  public class TestRequestBuilder {
42  
43      @Test
44      public void testBuildGETwithUTF8() throws Exception {
45          assertBuild(Consts.UTF_8);
46      }
47  
48      @Test
49      public void testBuildGETwithISO88591() throws Exception {
50          assertBuild(Consts.ISO_8859_1);
51      }
52  
53      private void assertBuild(final Charset charset) throws Exception {
54          final RequestBuilder requestBuilder = RequestBuilder.create("GET").setCharset(charset);
55          requestBuilder.setUri("https://somehost.com/stuff");
56          requestBuilder.addParameters(createParameters());
57  
58          final String encodedData1 = URLEncoder.encode("\"1\u00aa position\"", charset.displayName());
59          final String encodedData2 = URLEncoder.encode("Jos\u00e9 Abra\u00e3o", charset.displayName());
60  
61          final String uriExpected = String.format("https://somehost.com/stuff?parameter1=value1&parameter2=%s&parameter3=%s", encodedData1, encodedData2);
62  
63          final HttpUriRequest request = requestBuilder.build();
64          Assert.assertEquals(uriExpected, request.getURI().toString());
65      }
66  
67      private NameValuePair[] createParameters() {
68          final NameValuePair parameters[] = new NameValuePair[3];
69          parameters[0] = new BasicNameValuePair("parameter1", "value1");
70          parameters[1] = new BasicNameValuePair("parameter2", "\"1\u00aa position\"");
71          parameters[2] = new BasicNameValuePair("parameter3", "Jos\u00e9 Abra\u00e3o");
72          return parameters;
73      }
74  }