[HtmlUnit] SVN: [15467] trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit

rbri--- via HtmlUnit-develop <[email protected]> Mon, 16 Jul 2018 17:45:42 +0000
Newsgroups gmane.comp.java.htmlunit.devel
Message-ID <[email protected]>
Revision: 15467
          http://sourceforge.net/p/htmlunit/code/15467
Author:   rbri
Date:     2018-07-16 17:45:39 +0000 (Mon, 16 Jul 2018)
Log Message:
-----------
make the encoding of parameters depending on the request type

Modified Paths:
--------------
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/HttpWebConnection.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClient.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 16:18:48 UTC (rev 15466)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/HttpWebConnection.java	2018-07-16 17:45:39 UTC (rev 15467)
@@ -28,6 +28,7 @@
 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;
@@ -288,16 +289,28 @@
 
         final Charset charset = webRequest.getCharset();
         final HttpContext httpContext = getHttpContext();
+
         // 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 = UrlUtils.encodeUrl(webRequest.getUrl(), false, charset);
+        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);
+        }
 
         URI uri = UrlUtils.toURI(url, escapeQuery(url.getQuery()));
         if (getVirtualHost() != null) {
             uri = URI.create(getVirtualHost());
         }
+
         final HttpRequestBase httpMethod = buildHttpMethod(webRequest.getHttpMethod(), uri);
         setProxy(httpMethod, webRequest);
         if (!(httpMethod instanceof HttpEntityEnclosingRequest)) {

Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClient.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClient.java	2018-07-16 16:18:48 UTC (rev 15466)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClient.java	2018-07-16 17:45:39 UTC (rev 15467)
@@ -36,7 +36,6 @@
 import java.net.URLConnection;
 import java.net.URLDecoder;
 import java.nio.charset.Charset;
-import java.nio.charset.StandardCharsets;
 import java.util.ArrayDeque;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -462,8 +461,6 @@
     @SuppressWarnings("unchecked")
     public <P extends Page> P getPage(final URL url) throws IOException, FailingHttpStatusCodeException {
         final WebRequest request = new WebRequest(url, getBrowserVersion().getHtmlAcceptHeader());
-        request.setCharset(StandardCharsets.UTF_8);
-
         return (P) getPage(getCurrentWindow().getTopWindow(), request);
     }
 
@@ -884,7 +881,6 @@
         if (url != null) {
             try {
                 final WebRequest request = new WebRequest(url, getBrowserVersion().getHtmlAcceptHeader());
-                request.setCharset(StandardCharsets.UTF_8);
 
                 if (getBrowserVersion().hasFeature(DIALOGWINDOW_REFERER)
                         && openerPage != null) {
@@ -1016,7 +1012,6 @@
 
         final HtmlPage openerPage = (HtmlPage) opener.getEnclosedPage();
         final WebRequest request = new WebRequest(url, getBrowserVersion().getHtmlAcceptHeader());
-        request.setCharset(StandardCharsets.UTF_8);
 
         if (getBrowserVersion().hasFeature(DIALOGWINDOW_REFERER) && openerPage != null) {
             final String referer = openerPage.getUrl().toExternalForm();


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot