[HtmlUnit] SVN: [15470] trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit
rbri--- via HtmlUnit-develop <[email protected]> Mon, 16 Jul 2018 19:03:50 +0000
| Newsgroups | gmane.comp.java.htmlunit.devel |
|---|---|
| Message-ID | <[email protected]> |
Revision: 15470
http://sourceforge.net/p/htmlunit/code/15470
Author: rbri
Date: 2018-07-16 19:03:46 +0000 (Mon, 16 Jul 2018)
Log Message:
-----------
next step in our endless encoding fight
Modified Paths:
--------------
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/HttpWebConnection.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClient.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebRequest.java
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/HttpWebConnection.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/HttpWebConnection.java 2018-07-16 17:46:31 UTC (rev 15469)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/HttpWebConnection.java 2018-07-16 19:03:46 UTC (rev 15470)
@@ -28,7 +28,6 @@
import java.net.URISyntaxException;
import java.net.URL;
import java.nio.charset.Charset;
-import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -287,24 +286,14 @@
private HttpUriRequest makeHttpMethod(final WebRequest webRequest, final HttpClientBuilder httpClientBuilder)
throws URISyntaxException {
- final Charset charset = webRequest.getCharset();
final HttpContext httpContext = getHttpContext();
+ final Charset encCharset = webRequest.getUrlEncodingCharset();
// Make sure that the URL is fully encoded. IE actually sends some Unicode chars in request
// URLs; because of this we allow some Unicode chars in URLs. However, at this point we're
// handing things over the HttpClient, and HttpClient will blow up if we leave these Unicode
// chars in the URL.
- final URL url;
- if (HttpMethod.GET == webRequest.getHttpMethod()
- || HttpMethod.DELETE == webRequest.getHttpMethod()
- || HttpMethod.HEAD == webRequest.getHttpMethod()
- || HttpMethod.OPTIONS == webRequest.getHttpMethod()
- || HttpMethod.TRACE == webRequest.getHttpMethod()) {
- url = UrlUtils.encodeUrl(webRequest.getUrl(), false, StandardCharsets.UTF_8);
- }
- else {
- url = UrlUtils.encodeUrl(webRequest.getUrl(), false, charset);
- }
+ final URL url = UrlUtils.encodeUrl(webRequest.getUrl(), false, encCharset);
URI uri = UrlUtils.toURI(url, escapeQuery(url.getQuery()));
if (getVirtualHost() != null) {
@@ -311,14 +300,16 @@
uri = URI.create(getVirtualHost());
}
+ final Charset charset = webRequest.getCharset();
final HttpRequestBase httpMethod = buildHttpMethod(webRequest.getHttpMethod(), uri);
setProxy(httpMethod, webRequest);
+
if (!(httpMethod instanceof HttpEntityEnclosingRequest)) {
// this is the case for GET as well as TRACE, DELETE, OPTIONS and HEAD
if (!webRequest.getRequestParameters().isEmpty()) {
final List<NameValuePair> pairs = webRequest.getRequestParameters();
final org.apache.http.NameValuePair[] httpClientPairs = NameValuePair.toHttpClient(pairs);
- final String query = URLEncodedUtils.format(Arrays.asList(httpClientPairs), charset);
+ final String query = URLEncodedUtils.format(Arrays.asList(httpClientPairs), encCharset);
uri = UrlUtils.toURI(url, query);
httpMethod.setURI(uri);
}
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClient.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClient.java 2018-07-16 17:46:31 UTC (rev 15469)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClient.java 2018-07-16 19:03:46 UTC (rev 15470)
@@ -1337,7 +1337,7 @@
WebAssert.notNull("parameters", parameters);
url = UrlUtils.encodeUrl(url, getBrowserVersion().hasFeature(URL_MINIMAL_QUERY_ENCODING),
- webRequest.getCharset());
+ webRequest.getUrlEncodingCharset());
webRequest.setUrl(url);
if (LOG.isDebugEnabled()) {
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebRequest.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebRequest.java 2018-07-16 17:46:31 UTC (rev 15469)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebRequest.java 2018-07-16 19:03:46 UTC (rev 15470)
@@ -23,6 +23,7 @@
import java.net.IDN;
import java.net.URL;
import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
@@ -430,6 +431,21 @@
}
/**
+ * Returns the character set to use to encode the url params.
+ * @return the character set to use to encode the url params
+ */
+ public Charset getUrlEncodingCharset() {
+ if (HttpMethod.GET == getHttpMethod()
+ || HttpMethod.DELETE == getHttpMethod()
+ || HttpMethod.HEAD == getHttpMethod()
+ || HttpMethod.OPTIONS == getHttpMethod()
+ || HttpMethod.TRACE == getHttpMethod()) {
+ return StandardCharsets.UTF_8;
+ }
+ return charset_;
+ }
+
+ /**
* Returns a string representation of this object.
* @return a string representation of this object
*/
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot