private List<NameValuePair> responseHeaders() { Collection<String> headerNames = this.response.getHeaderNames(); List<NameValuePair> responseHeaders = new ArrayList<>(headerNames.size()); for (String headerName : headerNames) { List<Object> headerValues = this.response.getHeaderValues(headerName); for (Object value : headerValues) { responseHeaders.add(new NameValuePair(headerName, String.valueOf(value))); } } String location = this.response.getRedirectedUrl(); if (location != null) { responseHeaders.add(new NameValuePair("Location", location)); } return responseHeaders; }
private void params(MockHttpServletRequest request, UriComponents uriComponents) { uriComponents.getQueryParams().forEach((name, values) -> { String urlDecodedName = urlDecode(name); values.forEach(value -> { value = (value != null ? urlDecode(value) : ""); request.addParameter(urlDecodedName, value); }); }); for (NameValuePair param : this.webRequest.getRequestParameters()) { request.addParameter(param.getName(), param.getValue()); } }
@Test public void buildResponseHeadersNullDomainDefaulted() throws Exception { Cookie cookie = new Cookie("cookieA", "valueA"); this.response.addCookie(cookie); WebResponse webResponse = this.responseBuilder.build(); List<NameValuePair> responseHeaders = webResponse.getResponseHeaders(); assertThat(responseHeaders.size(), equalTo(1)); NameValuePair header = responseHeaders.get(0); assertThat(header.getName(), equalTo("Set-Cookie")); assertThat(header.getValue(), equalTo("cookieA=valueA")); }
private JSONObject callStepsToJson(String jenkinsFileContent) throws IOException { JenkinsRule.WebClient wc = j.createWebClient(); WebRequest req = new WebRequest(new URL(wc.getContextPath() + ModelConverterAction.PIPELINE_CONVERTER_URL + "/stepsToJson"), HttpMethod.POST); assertNotNull(jenkinsFileContent); NameValuePair pair = new NameValuePair("jenkinsfile", jenkinsFileContent); req.setRequestParameters(Collections.singletonList(pair)); String rawResult = wc.getPage(req).getWebResponse().getContentAsString(); assertNotNull(rawResult); return JSONObject.fromObject(rawResult); } }
assert !path.startsWith("/"); URL postUrl = new URL(getURL().toExternalForm() + path); HttpURLConnection conn = (HttpURLConnection) postUrl.openConnection(); conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8"); NameValuePair crumb = getCrumbHeaderNVP(); conn.setRequestProperty(crumb.getName(), crumb.getValue()); if (responseStream != null) { byte[] bytes = IOUtils.toByteArray(responseStream); webResponseData = new WebResponseData(bytes, conn.getResponseCode(), conn.getResponseMessage(), extractHeaders(conn)); } else { webResponseData = new WebResponseData(new byte[0], conn.getResponseCode(), conn.getResponseMessage(), extractHeaders(conn)); WebResponse webResponse = new WebResponse(webResponseData, postUrl, HttpMethod.POST, (System.currentTimeMillis() - startTime));
/** * Tests a form submitting part of snippetizer. * * @param json * The form submission value from the configuration page to be tested. * @param responseText * Expected snippet to be generated * @param referer * needed because of {@link StaplerReferer} */ public void assertGenerateSnippet(@Nonnull String json, @Nonnull String responseText, @CheckForNull String referer) throws Exception { JenkinsRule.WebClient wc = r.createWebClient(); WebRequest wrs = new WebRequest(new URL(r.getURL(), Snippetizer.GENERATE_URL), HttpMethod.POST); if (referer != null) { wrs.setAdditionalHeader("Referer", referer); } List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new NameValuePair("json", json)); // WebClient.addCrumb *replaces* rather than *adds*: params.add(new NameValuePair(r.jenkins.getCrumbIssuer().getDescriptor().getCrumbRequestField(), r.jenkins.getCrumbIssuer().getCrumb(null))); wrs.setRequestParameters(params); WebResponse response = wc.getPage(wrs).getWebResponse(); assertEquals("text/plain", response.getContentType()); assertEquals(responseText, response.getContentAsString().trim()); }
/** * HtmlUnit을 이용한 HTML 코드 파싱. * * @param eachArchiveAddress 실제 만화가 담긴 아카이브 주소 * @return 성공 시 html 코드를 리턴 */ private String getHtmlPageHtmlUnit(String eachArchiveAddress) throws Exception { /* 필수! 로그 메세지 출력 안함 -> HtmlUnit 이용시 Verbose한 로그들이 너무 많아서 다 끔 */ java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF); System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog"); print.info("일반 연결 시도중...\n"); WebClient webClient = new WebClient(); webClient.getOptions().setRedirectEnabled(true); WebRequest req = new WebRequest(new URL(eachArchiveAddress)); req.setHttpMethod(HttpMethod.POST); req.setAdditionalHeader("User-Agent", UserAgent.getUserAgent()); req.setAdditionalHeader("Accept-Encoding", "gzip"); //20171126 gzip 추가 req.getRequestParameters().add(new NameValuePair("pass", PASSWORD)); //비밀번호 post 방식 전송 HtmlPage page = webClient.getPage(req); //Html코드를 포함한 페이지 소스코드가 담길 스트링 String pageSource = page.asXml(); /** 여기도 페이지 파싱 실패 시 검증하는 코드 들어가야 됨 **/ webClient.close(); print.info("일반 연결 성공\n"); return pageSource; }
String jobName = "simplePipeline"; WorkflowRun r = expect(jobName).go(); j.waitUntilNoActivity(); JenkinsRule.WebClient client = j.createWebClient(); WebRequest request = new WebRequest(new URL(client.getContextPath() + r.getUrl() + "restart/restartPipeline")); request.setHttpMethod(HttpMethod.POST); NameValuePair stageName = new NameValuePair("stageName", "foo"); params.add(new NameValuePair(crumbIssuer.getDescriptor().getCrumbRequestField(), crumbIssuer.getCrumb(null))); request.setRequestParameters(params); Page page = client.getPage(request); String response = page.getWebResponse().getContentAsString(); JsonNode json = JsonLoader.fromString(response); assertEquals(json.get("status").asText(), "ok"); stageName = new NameValuePair("stageName", "foo-not"); params.add(stageName); page = client.getPage(request);
final WebRequest request = response.getWebRequest(); final String scriptName = request.getUrl().toString(); final String scriptSource = response.getContentAsString(); final List<NameValuePair> responseHeaders = new ArrayList<>(response.getResponseHeaders()); for (int i = responseHeaders.size() - 1; i >= 0; i--) { if ("content-encoding".equalsIgnoreCase(responseHeaders.get(i).getName())) { responseHeaders.remove(i); final WebResponseData wrd = new WebResponseData(decompileScript.getBytes(), response.getStatusCode(), response.getStatusMessage(), responseHeaders); return new WebResponse(wrd, response.getWebRequest().getUrl(), response.getWebRequest().getHttpMethod(), response.getLoadTime());
final Charset charset = webRequest.getCharset(); final URL 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 (!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); uri = UrlUtils.toURI(url, query); if (webRequest.getRequestBody() == null) { 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 StringEntity urlEncodedEntity = new StringEntity(query, charset); builder.addTextBody(pair.getName(), pair.getValue(), ContentType.create("text/plain", charset));
URL cleanUrl = webRequest.getUrl(); if (cleanUrl.getQuery() != null) { if (cleanUrl.getRef() != null) { String fileUrl = cleanUrl.toExternalForm(); fileUrl = URLDecoder.decode(fileUrl, UTF_8.name()); final File file = new File(fileUrl.substring(5)); compiledHeaders.add(new NameValuePair(HttpHeader.CONTENT_TYPE, "text/html")); final WebResponseData responseData = new WebResponseData( TextUtil.stringToByteArray("File: " + file.getAbsolutePath(), UTF_8), 404, "Not Found", compiledHeaders); return new WebResponse(responseData, webRequest, 0); compiledHeaders.add(new NameValuePair(HttpHeader.CONTENT_TYPE, contentType)); compiledHeaders.add(new NameValuePair(HttpHeader.LAST_MODIFIED, DateUtils.formatDate(new Date(file.lastModified())))); final WebResponseData responseData = new WebResponseData(content, 200, "OK", compiledHeaders); final WebResponse webResponse = new WebResponse(responseData, webRequest, 0); getCache().cacheIfPossible(webRequest, webResponse, null); return webResponse;
@Override public String getServerResponse() { StringBuffer result = new StringBuffer(); WebResponse wr = wc.getCurrentWindow().getEnclosedPage() .getWebResponse(); result.append(wr.getStatusCode()).append(" ").append( wr.getStatusMessage()).append("\n"); result.append("Location: ").append(wr.getWebRequest().getUrl()).append("\n"); for (NameValuePair h : wr.getResponseHeaders()) { result.append(h.getName()).append(": ").append(h.getValue()) .append("\n"); } result.append("\n"); result.append(wr.getContentAsString()); return result.toString(); }
public void afterRequest(WebResponse webResponse) { System.out.println("-----------Snooping HtmlUnit Response---------------------------"); if (webResponse == null) { System.out.println("REQUEST THREW IOException. Response is null."); System.out.println("---------------------------------------------------------------"); } System.out.println("Response time=" + webResponse.getLoadTime() + "ms"); System.out.println("Status code=" + webResponse.getStatusCode()); System.out.println("Status message=" + webResponse.getStatusMessage()); System.out.println("Content type=" + webResponse.getContentType()); System.out.println("Content char set=" + webResponse.getContentCharset()); System.out.println(); System.out.println("Response Headers:"); for (Iterator i = webResponse.getResponseHeaders().iterator(); i.hasNext();) { NameValuePair pair = (NameValuePair)i.next(); System.out.println(pair.getName() + "=" + pair.getValue()); } System.out.println(); System.out.println("Response body:"); System.out.println(webResponse.getContentAsString()); System.out.println("---------------------------------------------------------------"); }
WebResponse response = page.getWebResponse(); boolean truncated = false; try (InputStream stream = response.getContentAsStream()) { try (BoundedInputStream boundedStream = new BoundedInputStream(stream, CONTENT_LIMIT)) { try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { IOUtils.copy(boundedStream, out); fetchedData = new FetchedData(out.toByteArray(), response.getContentType(), response.getStatusCode()); long contentLength = page.getWebResponse().getContentLength(); if (contentLength > 0 && contentLength < Integer.MAX_VALUE) { fetchedData.setContentLength((int) contentLength); List<NameValuePair> respHeaders = page.getWebResponse().getResponseHeaders(); Map<String, List<String>> headers = new HashMap<>(); fetchedData.setHeaders(headers); if (respHeaders != null && !respHeaders.isEmpty()){ respHeaders.forEach(item -> { if (!headers.containsKey(item.getName())) { headers.put(item.getName(), new ArrayList<>()); headers.get(item.getName()).add(item.getValue()); });
public void beforeRequest(WebRequest webRequest) { System.out.println("-----------Snooping HtmlUnit Request---------------------------"); System.out.println("url=" + webRequest.getUrl()); System.out.println("method=" + webRequest.getHttpMethod()); System.out.println("encoding=" + webRequest.getEncodingType()); System.out.println(); System.out.println("Additional Headers:"); Map<String, String> addlHeaders = webRequest.getAdditionalHeaders(); for (Iterator<String> i = addlHeaders.keySet().iterator(); i.hasNext(); ) { String name = i.next(); System.out.println(name + "=" + addlHeaders.get(name)); } System.out.println(); System.out.println("Request Params:"); for (Iterator i = webRequest.getRequestParameters().iterator(); i.hasNext();) { NameValuePair pair = (NameValuePair)i.next(); System.out.println(pair.getName() + "=" + pair.getValue()); } System.out.println("---------------------------------------------------------------"); }
/** * Creates a faked WebResponse for the request with the provided content. * @param wr the web request for which a response should be created * @param content the content to place in the response * @param contentType the content type of the response * @param responseCode the HTTP code for the response * @param responseMessage the HTTP message for the response * @return a web response with the provided content * @throws IOException if an encoding problem occurred */ protected WebResponse createWebResponse(final WebRequest wr, final String content, final String contentType, final int responseCode, final String responseMessage) throws IOException { final List<NameValuePair> headers = new ArrayList<>(); headers.add(new NameValuePair(HttpHeader.CONTENT_TYPE_LC, contentType + "; charset=" + UTF_8)); final byte[] body = content.getBytes(UTF_8); final WebResponseData wrd = new WebResponseData(body, responseCode, responseMessage, headers); return new WebResponse(wrd, wr.getUrl(), wr.getHttpMethod(), 0); } }
@Test public void buildRequestParameterMapViaWebRequestDotSetRequestParametersWithMultipleRequestParams() { webRequest.setRequestParameters(asList(new NameValuePair("name1", "value1"), new NameValuePair("name2", "value2"))); MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext); assertThat(actualRequest.getParameterMap().size(), equalTo(2)); assertThat(actualRequest.getParameter("name1"), equalTo("value1")); assertThat(actualRequest.getParameter("name2"), equalTo("value2")); }
/** * Removes the entry (if exists). * @param name the name of the field to remove */ @JsxFunction(functionName = "delete", value = {FF, CHROME}) public void delete_js(final String name) { if (StringUtils.isEmpty(name)) { return; } final Iterator<NameValuePair> iter = requestParameters_.iterator(); while (iter.hasNext()) { final NameValuePair pair = iter.next(); if (name.equals(pair.getName())) { iter.remove(); } } }
/** * {@inheritDoc} */ @Override public boolean equals(final Object object) { // this is overwritten to make FindBugs happy // and to make it clear, that we really want to have // the same equals semantic like our parent class return super.equals(object); }