Java源码示例:com.gargoylesoftware.htmlunit.FormEncodingType
示例1
/**
* @param name header name (MUST be lower-case for performance reasons)
* @param value header value
*/
private static boolean isPreflightHeader(final String name, final String value) {
if (HttpHeader.CONTENT_TYPE_LC.equals(name)) {
final String lcValue = value.toLowerCase(Locale.ROOT);
if (lcValue.startsWith(FormEncodingType.URL_ENCODED.getName())
|| lcValue.startsWith(FormEncodingType.MULTIPART.getName())
|| lcValue.startsWith(FormEncodingType.TEXT_PLAIN.getName())) {
return false;
}
return true;
}
if (HttpHeader.ACCEPT_LC.equals(name)
|| HttpHeader.ACCEPT_LANGUAGE_LC.equals(name)
|| HttpHeader.CONTENT_LANGUAGE_LC.equals(name)
|| HttpHeader.REFERER_LC.equals(name)
|| "accept-encoding".equals(name)
|| HttpHeader.ORIGIN_LC.equals(name)) {
return false;
}
return true;
}
示例2
/**
* @param name header name (MUST be lower-case for performance reasons)
* @param value header value
*/
private static boolean isPreflightHeader(final String name, final String value) {
if (HttpHeader.CONTENT_TYPE_LC.equals(name)) {
final String lcValue = value.toLowerCase(Locale.ROOT);
return !(lcValue.startsWith(FormEncodingType.URL_ENCODED.getName())
|| lcValue.startsWith(FormEncodingType.MULTIPART.getName())
|| lcValue.startsWith(MimeType.TEXT_PLAIN));
}
return !(HttpHeader.ACCEPT_LC.equals(name)
|| HttpHeader.ACCEPT_LANGUAGE_LC.equals(name)
|| HttpHeader.CONTENT_LANGUAGE_LC.equals(name)
|| HttpHeader.REFERER_LC.equals(name)
|| HttpHeader.ACCEPT_ENCODING_LC.equals(name)
|| HttpHeader.ORIGIN_LC.equals(name));
}
示例3
/**
* @throws Exception if the test fails
*/
@Test
public void buttonWithFormEnctype() throws Exception {
final String html = "<!DOCTYPE html>\n"
+ "<html><head></head>\n"
+ "<body>\n"
+ " <p>hello world</p>\n"
+ " <form id='myForm' action='" + URL_SECOND
+ "' method='" + HttpMethod.POST
+ "' enctype='" + FormEncodingType.URL_ENCODED.getName() + "'>\n"
+ " <input type='file' value='file1'>\n"
+ " <button id='myButton' type='submit' formenctype='" + FormEncodingType.MULTIPART.getName()
+ "'>Submit with different form encoding type</button>\n"
+ " </form>\n"
+ "</body></html>";
final String secondContent = "second content";
getMockWebConnection().setResponse(URL_SECOND, secondContent);
final WebDriver driver = loadPage2(html);
driver.findElement(By.id("myButton")).click();
assertEquals(2, getMockWebConnection().getRequestCount());
assertEquals(URL_SECOND.toString(), getMockWebConnection().getLastWebRequest().getUrl());
assertEquals(FormEncodingType.MULTIPART, getMockWebConnection().getLastWebRequest().getEncodingType());
}
示例4
/**
* @throws Exception if the test fails
*/
@Test
public void inputTypeSubmitWithFormEnctype() throws Exception {
final String html = "<!DOCTYPE html>\n"
+ "<html><head></head>\n"
+ "<body>\n"
+ " <p>hello world</p>\n"
+ " <form id='myForm' action='" + URL_SECOND
+ "' method='" + HttpMethod.POST
+ "' enctype='" + FormEncodingType.URL_ENCODED.getName()
+ "'>\n"
+ " <input type='file' value='file1'>\n"
+ " <input id='myButton' type='submit' formenctype='" + FormEncodingType.MULTIPART.getName() + "' />\n"
+ " </form>\n"
+ "</body></html>";
final String secondContent = "second content";
getMockWebConnection().setResponse(URL_SECOND, secondContent);
final WebDriver driver = loadPage2(html);
driver.findElement(By.id("myButton")).click();
assertEquals(2, getMockWebConnection().getRequestCount());
assertEquals(URL_SECOND.toString(), getMockWebConnection().getLastWebRequest().getUrl());
assertEquals(FormEncodingType.MULTIPART, getMockWebConnection().getLastWebRequest().getEncodingType());
}
示例5
/**
* @throws Exception if the test fails
*/
@Test
@Alerts(DEFAULT = "application/x-www-form-urlencoded",
IE = "multipart/form-data")
public void inputTypeImageWithFormEnctype() throws Exception {
final String html = "<!DOCTYPE html>\n"
+ "<html><head></head>\n"
+ "<body>\n"
+ " <p>hello world</p>\n"
+ " <form id='myForm' action='" + URL_SECOND
+ "' method='" + HttpMethod.POST
+ "' enctype='" + FormEncodingType.MULTIPART.getName() + "'>\n"
+ " <input id='myButton' type='image' formenctype='" + FormEncodingType.URL_ENCODED.getName() + "' />\n"
+ " </form>\n"
+ "</body></html>";
final String secondContent = "second content";
getMockWebConnection().setResponse(URL_SECOND, secondContent);
final WebDriver driver = loadPage2(html, URL_FIRST);
driver.findElement(By.id("myButton")).click();
assertEquals(URL_SECOND.toString(), getMockWebConnection().getLastWebRequest().getUrl());
assertEquals(getExpectedAlerts()[0],
getMockWebConnection().getLastWebRequest().getEncodingType().getName());
}
示例6
/**
* @param name header name (MUST be lower-case for performance reasons)
* @param value header value
*/
private static boolean isPreflightHeader(final String name, final String value) {
if (HttpHeader.CONTENT_TYPE_LC.equals(name)) {
final String lcValue = value.toLowerCase(Locale.ROOT);
if (lcValue.startsWith(FormEncodingType.URL_ENCODED.getName())
|| lcValue.startsWith(FormEncodingType.MULTIPART.getName())
|| lcValue.startsWith("text/plain")) {
return false;
}
return true;
}
if (HttpHeader.ACCEPT_LC.equals(name)
|| HttpHeader.ACCEPT_LANGUAGE_LC.equals(name)
|| HttpHeader.CONTENT_LANGUAGE_LC.equals(name)
|| HttpHeader.REFERER_LC.equals(name)
|| "accept-encoding".equals(name)
|| HttpHeader.ORIGIN_LC.equals(name)) {
return false;
}
return true;
}
示例7
/**
* @param name header name (MUST be lower-case for performance reasons)
* @param value header value
*/
private static boolean isPreflightHeader(final String name, final String value) {
if (HttpHeader.CONTENT_TYPE_LC.equals(name)) {
final String lcValue = value.toLowerCase(Locale.ROOT);
if (lcValue.startsWith(FormEncodingType.URL_ENCODED.getName())
|| lcValue.startsWith(FormEncodingType.MULTIPART.getName())
|| lcValue.startsWith("text/plain")) {
return false;
}
return true;
}
if (HttpHeader.ACCEPT_LC.equals(name)
|| HttpHeader.ACCEPT_LANGUAGE_LC.equals(name)
|| HttpHeader.CONTENT_LANGUAGE_LC.equals(name)
|| HttpHeader.REFERER_LC.equals(name)
|| HttpHeader.ACCEPT_ENCODING_LC.equals(name)
|| HttpHeader.ORIGIN_LC.equals(name)) {
return false;
}
return true;
}
示例8
@Test // SPR-14916
public void buildRequestContentTypeWithFormSubmission() {
webRequest.setEncodingType(FormEncodingType.URL_ENCODED);
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
assertThat(actualRequest.getContentType(), equalTo("application/x-www-form-urlencoded"));
assertThat(actualRequest.getHeader("Content-Type"),
equalTo("application/x-www-form-urlencoded;charset=ISO-8859-1"));
}
示例9
@Test // SPR-14916
public void buildRequestContentTypeWithFormSubmission() {
webRequest.setEncodingType(FormEncodingType.URL_ENCODED);
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
assertThat(actualRequest.getContentType(), equalTo("application/x-www-form-urlencoded"));
assertThat(actualRequest.getHeader("Content-Type"),
equalTo("application/x-www-form-urlencoded;charset=ISO-8859-1"));
}
示例10
/**
* Sets the specified request with the parameters in this {@code FormData}.
* @param webRequest the web request to fill
*/
public void fillRequest(final WebRequest webRequest) {
webRequest.setRequestBody(null);
webRequest.setEncodingType(FormEncodingType.URL_ENCODED);
if (params_.size() > 0) {
final List<NameValuePair> params = new ArrayList<NameValuePair>();
for (Entry<String, String> entry : params_) {
params.add(new NameValuePair(entry.getKey(), entry.getValue()));
}
webRequest.setRequestParameters(params);
}
}
示例11
/**
* Prepares the WebRequest that will be sent.
* @param content the content to send
*/
private void prepareRequest(final Object content) {
if (content != null
&& (HttpMethod.POST == webRequest_.getHttpMethod()
|| HttpMethod.PUT == webRequest_.getHttpMethod()
|| HttpMethod.PATCH == webRequest_.getHttpMethod())
&& !Undefined.isUndefined(content)) {
final boolean setEncodingType = webRequest_.getAdditionalHeader(HttpHeader.CONTENT_TYPE) == null;
if (content instanceof FormData) {
((FormData) content).fillRequest(webRequest_);
}
else if (content instanceof NativeArrayBufferView) {
final NativeArrayBufferView view = (NativeArrayBufferView) content;
webRequest_.setRequestBody(new String(view.getBuffer().getBuffer(), UTF_8));
if (setEncodingType) {
webRequest_.setEncodingType(null);
}
}
else if (content instanceof URLSearchParams) {
((URLSearchParams) content).fillRequest(webRequest_);
webRequest_.addHint(HttpHint.IncludeCharsetInContentTypeHeader);
}
else {
final String body = Context.toString(content);
if (!body.isEmpty()) {
if (LOG.isDebugEnabled()) {
LOG.debug("Setting request body to: " + body);
}
webRequest_.setRequestBody(body);
webRequest_.setCharset(UTF_8);
if (setEncodingType) {
webRequest_.setEncodingType(FormEncodingType.TEXT_PLAIN);
}
}
}
}
}
示例12
/**
* Returns the value of the property {@code enctype}.
* @return the value of this property
*/
@JsxGetter
public String getEnctype() {
final String encoding = getHtmlForm().getEnctypeAttribute();
if (!FormEncodingType.URL_ENCODED.getName().equals(encoding)
&& !FormEncodingType.MULTIPART.getName().equals(encoding)
&& !MimeType.TEXT_PLAIN.equals(encoding)) {
return FormEncodingType.URL_ENCODED.getName();
}
return encoding;
}
示例13
/**
* Sets the value of the property {@code enctype}.
* @param enctype the new value
*/
@JsxSetter
public void setEnctype(final String enctype) {
WebAssert.notNull("encoding", enctype);
if (getBrowserVersion().hasFeature(JS_FORM_REJECT_INVALID_ENCODING)
&& !FormEncodingType.URL_ENCODED.getName().equals(enctype)
&& !FormEncodingType.MULTIPART.getName().equals(enctype)
&& !FormEncodingType.TEXT_PLAIN.getName().equals(enctype)) {
throw Context.reportRuntimeError("Cannot set the encoding property to invalid value: '" + enctype + "'");
}
getHtmlForm().setEnctypeAttribute(enctype);
}
示例14
/**
* Saves the response content in the temp dir and adds it to the summary page.
* @param response the response to save
* @param request the request used to get the response
* @throws IOException if a problem occurs writing the file
*/
protected void saveResponse(final WebResponse response, final WebRequest request)
throws IOException {
counter_++;
final String extension = chooseExtension(response.getContentType());
final File file = createFile(request.getUrl(), extension);
int length = 0;
try (InputStream input = response.getContentAsStream()) {
try (OutputStream fos = Files.newOutputStream(file.toPath())) {
length = IOUtils.copy(input, fos);
}
catch (final EOFException e) {
// ignore
}
}
final URL url = response.getWebRequest().getUrl();
if (LOG.isInfoEnabled()) {
LOG.info("Created file " + file.getAbsolutePath() + " for response " + counter_ + ": " + url);
}
final StringBuilder bduiler = new StringBuilder();
bduiler.append("tab[tab.length] = {code: " + response.getStatusCode() + ", ")
.append("fileName: '" + file.getName() + "', ")
.append("contentType: '" + response.getContentType() + "', ")
.append("method: '" + request.getHttpMethod().name() + "', ");
if (request.getHttpMethod() == HttpMethod.POST && request.getEncodingType() == FormEncodingType.URL_ENCODED) {
bduiler.append("postParameters: " + nameValueListToJsMap(request.getRequestParameters()) + ", ");
}
bduiler.append("url: '" + escapeJSString(url.toString()) + "', ")
.append("loadTime: " + response.getLoadTime() + ", ")
.append("responseSize: " + length + ", ")
.append("responseHeaders: " + nameValueListToJsMap(response.getResponseHeaders()))
.append("};\n");
appendToJSFile(bduiler.toString());
}
示例15
private void jsEnctype(final String enctype) throws Exception {
final String html
= "<html>\n"
+ "<head>\n"
+ " <script>\n"
+ " function doTest() {\n"
+ " try {\n"
+ " document.forms[0].enctype = '" + enctype + "';\n"
+ " alert(document.forms[0].enctype);\n"
+ " } catch(e) { alert('exception'); }\n"
+ " alert(document.forms[0].encoding);\n"
+ " }\n"
+ " </script>\n"
+ "</head>\n"
+ "<body onload='doTest()'>\n"
+ " <form id='testForm' name='testForm' method='post' action = 'page2.html'>\n"
+ " <input type='submit' name='submit1' />\n"
+ " </form>\n"
+ "</body></html>";
getMockWebConnection().setDefaultResponse("<html><title>Response</title></html>");
final WebDriver driver = loadPage2(html);
verifyAlerts(DEFAULT_WAIT_TIME, driver, new String[] {getExpectedAlerts()[0], getExpectedAlerts()[1]});
driver.findElement(By.name("submit1")).click();
assertTitle(driver, "Response");
String headerValue = getMockWebConnection().getLastWebRequest().getAdditionalHeaders()
.get(HttpHeader.CONTENT_TYPE);
if (headerValue.startsWith(FormEncodingType.MULTIPART.getName())) {
// Can't test equality for multipart/form-data as it will have the form:
// multipart/form-data; boundary=---------------------------42937861433140731107235900
headerValue = StringUtils.substringBefore(headerValue, ";");
assertEquals(getExpectedAlerts()[2], headerValue);
}
else {
assertEquals(getExpectedAlerts()[2], headerValue);
}
}
示例16
private void jsEncoding(final String encoding) throws Exception {
final String html
= "<html>\n"
+ "<head>\n"
+ " <script>\n"
+ " function doTest() {\n"
+ " try {\n"
+ " document.forms[0].encoding = '" + encoding + "';\n"
+ " alert(document.forms[0].encoding);\n"
+ " } catch(e) { alert('exception'); }\n"
+ " alert(document.forms[0].enctype);\n"
+ " }\n"
+ " </script>\n"
+ "</head>\n"
+ "<body onload='doTest()'>\n"
+ " <form id='testForm' name='testForm' method='post' action = 'page2.html'>\n"
+ " <input type='submit' name='submit1' />\n"
+ " </form>\n"
+ "</body></html>";
getMockWebConnection().setDefaultResponse("<html><title>Response</title></html>");
final WebDriver driver = loadPage2(html);
verifyAlerts(DEFAULT_WAIT_TIME, driver, new String[] {getExpectedAlerts()[0], getExpectedAlerts()[1]});
driver.findElement(By.name("submit1")).click();
assertTitle(driver, "Response");
String headerValue = getMockWebConnection().getLastWebRequest().getAdditionalHeaders()
.get(HttpHeader.CONTENT_TYPE);
if (headerValue.startsWith(FormEncodingType.MULTIPART.getName())) {
// Can't test equality for multipart/form-data as it will have the form:
// multipart/form-data; boundary=---------------------------42937861433140731107235900
headerValue = StringUtils.substringBefore(headerValue, ";");
assertEquals(getExpectedAlerts()[2], headerValue);
}
else {
assertEquals(getExpectedAlerts()[2], headerValue);
}
}
示例17
private void enctypeTest(final boolean html5, final String enctype,
final String method, final String expectedCntType) throws Exception {
String html = "";
if (html5) {
html += "<!DOCTYPE html>\n";
}
html += "<html><head><script>\n"
+ "function test() {\n"
+ " var f = document.forms[0];\n"
+ " f.submit();\n"
+ "}\n"
+ "</script></head><body onload='test()'>\n"
+ "<form action='foo.html' ";
if (enctype != null) {
html += "enctype='" + enctype + "' ";
}
html += "method='" + method + "'>\n"
+ " <input name='myField' value='some value'>\n"
+ "</form></body></html>";
getMockWebConnection().setDefaultResponse("<html><title>Response</title></html>");
final WebDriver driver = loadPage2(html);
assertTitle(driver, "Response");
String headerValue = getMockWebConnection().getLastWebRequest().getAdditionalHeaders()
.get(HttpHeader.CONTENT_TYPE);
if (headerValue != null && headerValue.startsWith(FormEncodingType.MULTIPART.getName())) {
// Can't test equality for multipart/form-data as it will have the form:
// multipart/form-data; boundary=---------------------------42937861433140731107235900
headerValue = StringUtils.substringBefore(headerValue, ";");
assertEquals(expectedCntType, headerValue);
}
else {
assertEquals(expectedCntType, headerValue);
}
}
示例18
/**
* @throws Exception if an error occurs
*/
@Test
public void formMultipartEncodingTypeTest() throws Exception {
final String html = "<!DOCTYPE html>\n"
+ "<html><head></head>\n"
+ "<body>\n"
+ " <p>hello world</p>\n"
+ " <form id='myForm' action='" + URL_SECOND
+ "' method='" + HttpMethod.POST
+ "' enctype='" + FormEncodingType.MULTIPART.getName()
+ "'>\n"
+ " <input type='file' value='file1'>\n"
+ " <button id='myButton' type='submit'>Submit</button>\n"
+ " </form>\n"
+ "</body></html>";
final String secondContent
= "<html><head><title>second</title></head><body>\n"
+ " <p>hello world</p>\n"
+ "</body></html>";
getMockWebConnection().setResponse(URL_SECOND, secondContent);
final WebDriver driver = loadPage2(html, URL_FIRST);
driver.findElement(By.id("myButton")).click();
assertEquals(2, getMockWebConnection().getRequestCount());
assertEquals(URL_SECOND.toString(), getMockWebConnection().getLastWebRequest().getUrl());
assertEquals(FormEncodingType.MULTIPART, getMockWebConnection().getLastWebRequest().getEncodingType());
}
示例19
/**
* @throws Exception if an error occurs
*/
@Test
public void formUrlEncodedEncodingTypeTest() throws Exception {
final String html = "<!DOCTYPE html>\n"
+ "<html><head></head>\n"
+ "<body>\n"
+ " <p>hello world</p>\n"
+ " <form id='myForm' action='" + URL_SECOND
+ "' method='" + HttpMethod.POST
+ "' enctype='" + FormEncodingType.URL_ENCODED.getName()
+ "'>\n"
+ " <button id='myButton' type='submit'>Submit</button>\n"
+ " </form>\n"
+ "</body></html>";
final String secondContent
= "<html><head><title>second</title></head><body>\n"
+ " <p>hello world</p>\n"
+ "</body></html>";
getMockWebConnection().setResponse(URL_SECOND, secondContent);
final WebDriver driver = loadPage2(html, URL_FIRST);
driver.findElement(By.id("myButton")).click();
assertEquals(2, getMockWebConnection().getRequestCount());
assertEquals(URL_SECOND.toString(), getMockWebConnection().getLastWebRequest().getUrl());
assertEquals(FormEncodingType.URL_ENCODED, getMockWebConnection().getLastWebRequest().getEncodingType());
}
示例20
/**
* Returns the value of the property {@code enctype}.
* @return the value of this property
*/
@JsxGetter
public String getEnctype() {
final String encoding = getHtmlForm().getEnctypeAttribute();
if (!FormEncodingType.URL_ENCODED.getName().equals(encoding)
&& !FormEncodingType.MULTIPART.getName().equals(encoding)
&& !"text/plain".equals(encoding)) {
return FormEncodingType.URL_ENCODED.getName();
}
return encoding;
}
示例21
/**
* Sets the value of the property {@code enctype}.
* @param enctype the new value
*/
@JsxSetter
public void setEnctype(final String enctype) {
WebAssert.notNull("encoding", enctype);
if (getBrowserVersion().hasFeature(JS_FORM_REJECT_INVALID_ENCODING)) {
if (!FormEncodingType.URL_ENCODED.getName().equals(enctype)
&& !FormEncodingType.MULTIPART.getName().equals(enctype)) {
throw Context.reportRuntimeError("Cannot set the encoding property to invalid value: '"
+ enctype + "'");
}
}
getHtmlForm().setEnctypeAttribute(enctype);
}
示例22
/**
* Sets the specified request with the parameters in this {@code FormData}.
* @param webRequest the web request to fill
*/
public void fillRequest(final WebRequest webRequest) {
webRequest.setEncodingType(FormEncodingType.MULTIPART);
webRequest.setRequestParameters(requestParameters_);
}
示例23
/**
* Sets the specified request with the parameters in this {@code FormData}.
* @param webRequest the web request to fill
*/
public void fillRequest(final WebRequest webRequest) {
webRequest.setEncodingType(FormEncodingType.MULTIPART);
webRequest.setRequestParameters(requestParameters_);
}
示例24
/**
* <span style="color:red">INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.</span><br>
*
* Gets the request for a submission of this form with the specified SubmittableElement.
* @param submitElement the element that caused the submit to occur
* @return the request
*/
public WebRequest getWebRequest(final SubmittableElement submitElement) {
final HtmlPage htmlPage = (HtmlPage) getPage();
final List<NameValuePair> parameters = getParameterListForSubmit(submitElement);
final HttpMethod method;
final String methodAttribute = getMethodAttribute();
if ("post".equalsIgnoreCase(methodAttribute)) {
method = HttpMethod.POST;
}
else {
if (!"get".equalsIgnoreCase(methodAttribute) && StringUtils.isNotBlank(methodAttribute)) {
notifyIncorrectness("Incorrect submit method >" + getMethodAttribute() + "<. Using >GET<.");
}
method = HttpMethod.GET;
}
final BrowserVersion browser = getPage().getWebClient().getBrowserVersion();
String actionUrl = getActionAttribute();
String anchor = null;
String queryFromFields = "";
if (HttpMethod.GET == method) {
if (actionUrl.contains("#")) {
anchor = StringUtils.substringAfter(actionUrl, "#");
}
final Charset enc = getPage().getCharset();
queryFromFields =
URLEncodedUtils.format(Arrays.asList(NameValuePair.toHttpClient(parameters)), enc);
// action may already contain some query parameters: they have to be removed
actionUrl = StringUtils.substringBefore(actionUrl, "#");
actionUrl = StringUtils.substringBefore(actionUrl, "?");
parameters.clear(); // parameters have been added to query
}
URL url;
try {
if (actionUrl.isEmpty()) {
url = WebClient.expandUrl(htmlPage.getUrl(), actionUrl);
}
else {
url = htmlPage.getFullyQualifiedUrl(actionUrl);
}
if (!queryFromFields.isEmpty()) {
url = UrlUtils.getUrlWithNewQuery(url, queryFromFields);
}
if (HttpMethod.GET == method && browser.hasFeature(FORM_SUBMISSION_URL_WITHOUT_HASH)
&& WebClient.URL_ABOUT_BLANK != url) {
url = UrlUtils.getUrlWithNewRef(url, null);
}
else if (HttpMethod.POST == method
&& browser.hasFeature(FORM_SUBMISSION_URL_WITHOUT_HASH)
&& WebClient.URL_ABOUT_BLANK != url
&& StringUtils.isEmpty(actionUrl)) {
url = UrlUtils.getUrlWithNewRef(url, null);
}
else if (anchor != null
&& WebClient.URL_ABOUT_BLANK != url) {
url = UrlUtils.getUrlWithNewRef(url, anchor);
}
}
catch (final MalformedURLException e) {
throw new IllegalArgumentException("Not a valid url: " + actionUrl);
}
final WebRequest request = new WebRequest(url, method);
request.setAdditionalHeader(HttpHeader.ACCEPT, browser.getHtmlAcceptHeader());
request.setAdditionalHeader(HttpHeader.ACCEPT_ENCODING, "gzip, deflate");
request.setRequestParameters(parameters);
if (HttpMethod.POST == method) {
request.setEncodingType(FormEncodingType.getInstance(getEnctypeAttribute()));
}
request.setCharset(getSubmitCharset());
String referer = htmlPage.getUrl().toExternalForm();
request.setAdditionalHeader(HttpHeader.REFERER, referer);
if (HttpMethod.POST == method
&& browser.hasFeature(FORM_SUBMISSION_HEADER_ORIGIN)) {
referer = StringUtils.stripEnd(referer, "/");
request.setAdditionalHeader(HttpHeader.ORIGIN, referer);
}
if (HttpMethod.POST == method
&& browser.hasFeature(FORM_SUBMISSION_HEADER_CACHE_CONTROL_MAX_AGE)) {
request.setAdditionalHeader(HttpHeader.CACHE_CONTROL, "max-age=0");
}
if (browser.hasFeature(FORM_SUBMISSION_HEADER_CACHE_CONTROL_NO_CACHE)) {
request.setAdditionalHeader(HttpHeader.CACHE_CONTROL, "no-cache");
}
return request;
}