[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