Java Code Examples for org.apache.http.HttpResponse#getHeaders()

The following examples show how to use org.apache.http.HttpResponse#getHeaders() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ClientCertTestCase.java    From quarkus-http with Apache License 2.0 6 votes vote down vote up
@Test
@Ignore("UT3 - P3")
public void testClientCertSuccess() throws Exception {
    TestHttpClient client = new TestHttpClient();
    client.setSSLContext(clientSSLContext);
    HttpGet get = new HttpGet(DefaultServer.getDefaultServerSSLAddress());
    HttpResponse result = client.execute(get);
    assertEquals(StatusCodes.OK, result.getStatusLine().getStatusCode());

    Header[] values = result.getHeaders("ProcessedBy");
    assertEquals("ProcessedBy Headers", 1, values.length);
    assertEquals("ResponseHandler", values[0].getValue());

    values = result.getHeaders("AuthenticatedUser");
    assertEquals("AuthenticatedUser Headers", 1, values.length);
    assertEquals("CN=Test Client,OU=OU,O=Org,L=City,ST=State,C=GB", values[0].getValue());
    HttpClientUtils.readResponse(result);
    assertSingleNotificationType(EventType.AUTHENTICATED);
}
 
Example 2
Source File: SdsTHttpClient.java    From galaxy-sdk-java with Apache License 2.0 6 votes vote down vote up
/**
 * Adjust local clock when clock skew error received from server. The client clock need to be
 * roughly synchronized with server clock to make signature secure and reduce the chance of replay
 * attacks.
 *
 * @param response       server response
 * @param httpStatusCode status code
 * @return if clock is adjusted
 */
private boolean adjustClock(HttpResponse response, int httpStatusCode) {
  if (httpStatusCode == HttpStatusCode.CLOCK_TOO_SKEWED.getValue()) {
    Header[] headers = response.getHeaders(AuthenticationConstants.HK_TIMESTAMP);
    for (Header h : headers) {
      String hv = h.getValue();
      long serverTime = Long.parseLong(hv);
      long min = 60 * 60 * 24 * 365 * (2010 - 1970);
      long max = 60 * 60 * 24 * 365 * (2030 - 1970);
      if (serverTime > min && serverTime < max) {
        LOG.debug("Adjusting client time from {} to {}",
            new Date(clock.getCurrentEpoch() * 1000), new Date(serverTime * 1000));
        clock.adjust(serverTime);
        return true;
      }
    }
  }
  return false;
}
 
Example 3
Source File: SimpleSSLTestCase.java    From quarkus-http with Apache License 2.0 6 votes vote down vote up
@Test
public void simpleSSLTestCase() throws IOException, GeneralSecurityException {

    DefaultServer.setRootHandler(new HttpHandler() {
        @Override
        public void handleRequest(final HttpServerExchange exchange) throws Exception {
            exchange.setResponseHeader("scheme", exchange.getRequestScheme());
            exchange.endExchange();
        }
    });

    DefaultServer.startSSLServer();
    TestHttpClient client = new TestHttpClient();
    client.setSSLContext(DefaultServer.getClientSSLContext());
    try {
        HttpGet get = new HttpGet(DefaultServer.getDefaultServerSSLAddress());
        HttpResponse result = client.execute(get);
        Assert.assertEquals(StatusCodes.OK, result.getStatusLine().getStatusCode());
        Header[] header = result.getHeaders("scheme");
        Assert.assertEquals("https", header[0].getValue());
    } finally {
        client.getConnectionManager().shutdown();
        DefaultServer.stopSSLServer();
    }
}
 
Example 4
Source File: CrossOriginSimpleTest.java    From cxf with Apache License 2.0 6 votes vote down vote up
private void assertOriginResponse(boolean allOrigins, String[] requestOrigins, boolean permitted,
                                  HttpResponse response) {
    Header[] aaoHeaders = response.getHeaders(CorsHeaderConstants.HEADER_AC_ALLOW_ORIGIN);
    if (permitted) {
        assertNotNull(aaoHeaders);
        if (allOrigins) {
            assertEquals(1, aaoHeaders.length);
            assertEquals("*", aaoHeaders[0].getValue());
        } else {
            List<String> ovalues = headerValues(aaoHeaders);
            assertEquals(1, ovalues.size()); // get back one ac-allow-origin header.
            String[] origins = ovalues.get(0).split(" +");
            for (int x = 0; x < requestOrigins.length; x++) {
                assertEquals(requestOrigins[x], origins[x]);
            }
        }
    } else {
        // Origin: null? We don't use it and it's not in the CORS spec.
        assertTrue(aaoHeaders == null || aaoHeaders.length == 0);
    }
}
 
Example 5
Source File: DateHandlerTestCase.java    From quarkus-http with Apache License 2.0 6 votes vote down vote up
@Test
public void testDateHandler() throws IOException, InterruptedException {
    HttpGet get = new HttpGet(DefaultServer.getDefaultServerURL() + "/path");
    TestHttpClient client = new TestHttpClient();
    try {
        HttpResponse result = client.execute(get);
        Assert.assertEquals(StatusCodes.OK, result.getStatusLine().getStatusCode());
        Header date = result.getHeaders("Date")[0];
        final long firstDate = DateUtils.parseDate(date.getValue()).getTime();
        Assert.assertTrue((firstDate + 3000) > System.currentTimeMillis());
        Assert.assertTrue(System.currentTimeMillis() >= firstDate);
        HttpClientUtils.readResponse(result);
        Thread.sleep(1500);
        result = client.execute(get);
        Assert.assertEquals(StatusCodes.OK, result.getStatusLine().getStatusCode());
        date = result.getHeaders("Date")[0];
        final long secondDate = DateUtils.parseDate(date.getValue()).getTime();
        Assert.assertTrue((secondDate + 2000) > System.currentTimeMillis());
        Assert.assertTrue(System.currentTimeMillis() >= secondDate);
        Assert.assertTrue(secondDate > firstDate);
        HttpClientUtils.readResponse(result);
    } finally {

        client.getConnectionManager().shutdown();
    }
}
 
Example 6
Source File: MixerHttpClient.java    From beam-client-java with MIT License 5 votes vote down vote up
/**
 * Checks the response for an X-JWT header so we can parse it.
 * @param partialResponse
 */
private void handleJWT(HttpResponse partialResponse) {
    Header[] jwtHeaders = partialResponse.getHeaders(X_JWT_HEADER);
    if (jwtHeaders.length > 0) {
        Header jwtHeader = jwtHeaders[0];
        this.jwtString = jwtHeader.getValue();
        this.jwt = parseJWTData(jwtHeader.getValue());
    }
}
 
Example 7
Source File: ClientUtils.java    From org.hl7.fhir.core with Apache License 2.0 5 votes vote down vote up
protected String getLocationHeader(HttpResponse response) {
  String location = null;
  if(response.getHeaders("location").length > 0) {//TODO Distinguish between both cases if necessary
    location = response.getHeaders("location")[0].getValue();
  } else if(response.getHeaders("content-location").length > 0) {
    location = response.getHeaders("content-location")[0].getValue();
  }
  return location;
}
 
Example 8
Source File: ClientUtils.java    From org.hl7.fhir.core with Apache License 2.0 5 votes vote down vote up
protected String getLocationHeader(HttpResponse response) {
	String location = null;
	if(response.getHeaders("location").length > 0) {//TODO Distinguish between both cases if necessary
   		location = response.getHeaders("location")[0].getValue();
   	} else if(response.getHeaders("content-location").length > 0) {
   		location = response.getHeaders("content-location")[0].getValue();
   	}
	return location;
}
 
Example 9
Source File: MoveResponseHeader.java    From esigate with Apache License 2.0 5 votes vote down vote up
/**
 * This method can be used directly to move an header.
 * 
 * @param response
 *            HTTP response
 * @param srcName
 *            source header name
 * @param targetName
 *            target header name
 */
public static void moveHeader(HttpResponse response, String srcName, String targetName) {
    if (response.containsHeader(srcName)) {
        LOG.info("Moving header {} to {}", srcName, targetName);

        Header[] headers = response.getHeaders(srcName);
        response.removeHeaders(targetName);
        for (Header h : headers) {
            response.addHeader(targetName, h.getValue());
        }
        response.removeHeaders(srcName);
    }
}
 
Example 10
Source File: BinaryHttpResponseHandler.java    From Libraries-for-Android-Developers with MIT License 5 votes vote down vote up
@Override
public final void sendResponseMessage(HttpResponse response) throws IOException {
    StatusLine status = response.getStatusLine();
    Header[] contentTypeHeaders = response.getHeaders("Content-Type");
    if (contentTypeHeaders.length != 1) {
        //malformed/ambiguous HTTP Header, ABORT!
        sendFailureMessage(status.getStatusCode(), response.getAllHeaders(), null, new HttpResponseException(status.getStatusCode(), "None, or more than one, Content-Type Header found!"));
        return;
    }
    Header contentTypeHeader = contentTypeHeaders[0];
    boolean foundAllowedContentType = false;
    for (String anAllowedContentType : getAllowedContentTypes()) {
        try {
            if (Pattern.matches(anAllowedContentType, contentTypeHeader.getValue())) {
                foundAllowedContentType = true;
            }
        } catch (PatternSyntaxException e) {
            Log.e("BinaryHttpResponseHandler", "Given pattern is not valid: " + anAllowedContentType, e);
        }
    }
    if (!foundAllowedContentType) {
        //Content-Type not in allowed list, ABORT!
        sendFailureMessage(status.getStatusCode(), response.getAllHeaders(), null, new HttpResponseException(status.getStatusCode(), "Content-Type not allowed!"));
        return;
    }
    super.sendResponseMessage(response);
}
 
Example 11
Source File: TokenDemo.java    From ais-sdk with Apache License 2.0 5 votes vote down vote up
/**
 * 获取Token参数, 注意,此函数的目的,主要为了从HTTP请求返回体中的Header中提取出Token
 * 参数名为: X-Subject-Token
 * 
 * @param username   用户名
 * @param password   密码
 * @param projectName 区域名,可以参考http://developer.huaweicloud.com/dev/endpoint
 * @return 包含Token串的返回体,
 * @throws URISyntaxException
 * @throws UnsupportedOperationException
 * @throws IOException
 */
private static String getToken(String username, String password, String projectName)
		throws URISyntaxException, UnsupportedOperationException, IOException {
	String requestBody = requestBody(username, password, username, projectName);
	String url ="https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens"; 

	Header[] headers = new Header[] { new BasicHeader("Content-Type", ContentType.APPLICATION_JSON.toString()) };
	StringEntity stringEntity = new StringEntity(requestBody,
			"utf-8");

	HttpResponse response = HttpClientUtils.post(url, headers, stringEntity, connectionTimeout, connectionRequestTimeout, socketTimeout);
	Header[] xst = response.getHeaders("X-Subject-Token");
	return xst[0].getValue();

}
 
Example 12
Source File: AopHttpClient.java    From ArgusAPM with Apache License 2.0 5 votes vote down vote up
private static HttpResponse handleResponse(HttpResponse response, NetInfo data) {
    data.setStatusCode(response.getStatusLine().getStatusCode());
    Header[] headers = response.getHeaders("Content-Length");
    if ((headers != null) && (headers.length > 0)) {
        try {
            long l = Long.parseLong(headers[0].getValue());
            data.setReceivedBytes(l);
            if (DEBUG) {
                LogX.d(TAG, SUB_TAG, "-handleResponse--end--1");
            }
            data.end();
        } catch (NumberFormatException e) {
            if (Env.DEBUG) {
                LogX.d(TAG, SUB_TAG, "NumberFormatException ex : " + e.getMessage());
            }
        }
    } else if (response.getEntity() != null) {
        response.setEntity(new AopHttpResponseEntity(response.getEntity(), data));
    } else {
        data.setReceivedBytes(0);
        if (DEBUG) {
            LogX.d(TAG, SUB_TAG, "----handleResponse--end--2");
        }
        data.end();
    }
    if (DEBUG) {
        LogX.d(TAG, SUB_TAG, "execute:" + data.toString());
    }
    return response;
}
 
Example 13
Source File: DcResponse.java    From io with Apache License 2.0 5 votes vote down vote up
/**
 * レスポンスボディのストリームを受け取る.
 * @param res Responseオブジェクト
 * @return ストリーム
 * @throws IOException IO例外
 */
protected final InputStream getResponseBodyInputStream(final HttpResponse res) throws IOException {
    // GZip 圧縮されていたら解凍する。
    Header[] contentEncodingHeaders = res.getHeaders("Content-Encoding");
    if (contentEncodingHeaders.length > 0 && "gzip".equalsIgnoreCase(contentEncodingHeaders[0].getValue())) {
        return new GZIPInputStream(res.getEntity().getContent());
    } else {
        return res.getEntity().getContent();
    }
}
 
Example 14
Source File: TokenDemo.java    From ais-sdk with Apache License 2.0 5 votes vote down vote up
/**
 * 获取Token参数, 注意,此函数的目的,主要为了从HTTP请求返回体中的Header中提取出Token
 * 参数名为: X-Subject-Token
 * 
 * @param username   用户名
 * @param domainname   账户名
 * @param password   密码
 * @param regionName 区域名,可以参
 * @return 包含Token串的返回体,
 * @throws URISyntaxException
 * @throws UnsupportedOperationException
 * @throws IOException
 */
private static String getToken(String username, String domainname, String password, String regionName)
		throws URISyntaxException, UnsupportedOperationException, IOException {
	String requestBody = requestBody(username, password, domainname, regionName);
	String url ="https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens";

	Header[] headers = new Header[] { new BasicHeader("Content-Type", ContentType.APPLICATION_JSON.toString()) };
	StringEntity stringEntity = new StringEntity(requestBody,
			"utf-8");

	HttpResponse response = HttpClientUtils.post(url, headers, stringEntity, connectionTimeout, connectionRequestTimeout, socketTimeout);
	Header[] xst = response.getHeaders("X-Subject-Token");
	return xst[0].getValue();

}
 
Example 15
Source File: IAMAccountPasswordValidator.java    From aws-iam-ldap-bridge with Apache License 2.0 5 votes vote down vote up
private boolean containsHeaders(HttpResponse response, String... headers) {
    Header[] headerList = response.getHeaders("Set-Cookie");
    Set<String> lookup = new HashSet<String>(Arrays.asList(headers));
    for (Header header : headerList) {
        String value = header.getValue();
        if (!value.contains("=")) continue;
        String[] parts = value.split("=");
        if (parts.length < 2) continue;
        lookup.remove(parts[0]);
    }
    return lookup.isEmpty();
}
 
Example 16
Source File: HttpLogin.java    From javabase with Apache License 2.0 4 votes vote down vote up
public void login() {
		CloseableHttpClient httpclient = HttpClients.createDefault();
		HttpGet httpGet = new HttpGet(INDEX_URL);
		try {
			HttpResponse response = httpclient.execute(httpGet);
			Header[] cookieHeaders = response.getHeaders("Set-Cookie");
			
			// 设置登录参数
			List<NameValuePair> formparams = new ArrayList<NameValuePair>();
			formparams.add(new BasicNameValuePair("username", "18638217959"));
			formparams.add(new BasicNameValuePair("pwd", "1qaz1qaz"));
			formparams.add(new BasicNameValuePair("target", "http://m.ule.com:80/user/center?source=index"));
			UrlEncodedFormEntity entity1 = new UrlEncodedFormEntity(formparams, "UTF-8");
			// 新建Http post请求
			
			HttpPost httppost = new HttpPost(LOGIN_URL);
			httppost.setEntity(entity1);
			for (Header cookieHeader : cookieHeaders) {
				httppost.addHeader(cookieHeader);
				// log.info(cookieHeader.getName() + "=" + cookieHeader.getValue());
			}
			
			EntityUtils.consume(response.getEntity());
			HttpResponse responsePost = httpclient.execute(httppost);
			Header[] loginCookieHeaders = responsePost.getHeaders("Set-Cookie");
			
			EntityUtils.consume(responsePost.getEntity());

            //带着cookie去访问
//			HttpGet httpGetAddress = new HttpGet(ADDRESS_URL);
//			for (Header cookieHeader : loginCookieHeaders) {
//				// log.info(cookieHeader.getName() + "=" + cookieHeader.getValue());
//				httpGetAddress.addHeader(cookieHeader);
//			}
//			HttpResponse responseAddress = httpclient.execute(httpGetAddress);
//			String result = EntityUtils.toString(responseAddress.getEntity(), "UTF-8");
//			log.info(result);

            for (int i=0;i<=2560000;i++)
             praseAddress(httpclient,loginCookieHeaders,i);

            log.info(""+successLinkedList.size());
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
 
Example 17
Source File: QCRestHttpClient.java    From Cognizant-Intelligent-Test-Scripter with Apache License 2.0 4 votes vote down vote up
public Header[] getCookies(HttpResponse response) {
    return response.getHeaders("Set-Cookie");
}
 
Example 18
Source File: CrossOriginSimpleTest.java    From cxf with Apache License 2.0 4 votes vote down vote up
private void assertAllowCredentials(HttpResponse response, boolean correct) {
    Header[] aaoHeaders = response.getHeaders(CorsHeaderConstants.HEADER_AC_ALLOW_CREDENTIALS);
    assertEquals(1, aaoHeaders.length);
    assertEquals(Boolean.toString(correct), aaoHeaders[0].getValue());
}
 
Example 19
Source File: ResponseCachingPolicy.java    From apigee-android-sdk with Apache License 2.0 4 votes vote down vote up
/**
 * Determines if an HttpResponse can be cached.
 * 
 * @param httpMethod
 *            What type of request was this, a GET, PUT, other?
 * @param response
 *            The origin response
 * @return <code>true</code> if response is cacheable
 */
public boolean isResponseCacheable(String httpMethod, HttpResponse response) {
	boolean cacheable = false;

	if (!HeaderConstants.GET_METHOD.equals(httpMethod)) {
		log.debug("Response was not cacheable.");
		return false;
	}

	switch (response.getStatusLine().getStatusCode()) {
	case HttpStatus.SC_OK:
	case HttpStatus.SC_NON_AUTHORITATIVE_INFORMATION:
	case HttpStatus.SC_MULTIPLE_CHOICES:
	case HttpStatus.SC_MOVED_PERMANENTLY:
	case HttpStatus.SC_GONE:
		// these response codes MAY be cached
		cacheable = true;
		log.debug("Response was cacheable");
		break;
	case HttpStatus.SC_PARTIAL_CONTENT:
		// we don't implement Range requests and hence are not
		// allowed to cache partial content
		log.debug("Response was not cacheable (Partial Content)");
		return cacheable;

	default:
		// If the status code is not one of the recognized
		// available codes in HttpStatus Don't Cache
		log.debug("Response was not cacheable (Unknown Status code)");
		return cacheable;
	}

	Header contentLength = response.getFirstHeader(HTTP.CONTENT_LEN);
	if (contentLength != null) {
		int contentLengthValue = Integer.parseInt(contentLength.getValue());
		if (contentLengthValue > this.maxObjectSizeBytes)
			return false;
	}

	Header[] ageHeaders = response.getHeaders(HeaderConstants.AGE);

	if (ageHeaders.length > 1)
		return false;

	Header[] expiresHeaders = response.getHeaders(HeaderConstants.EXPIRES);

	if (expiresHeaders.length > 1)
		return false;

	Header[] dateHeaders = response.getHeaders(HTTP.DATE_HEADER);

	if (dateHeaders.length != 1)
		return false;

	try {
		DateUtils.parseDate(dateHeaders[0].getValue());
	} catch (DateParseException dpe) {
		return false;
	}

	for (Header varyHdr : response.getHeaders(HeaderConstants.VARY)) {
		for (HeaderElement elem : varyHdr.getElements()) {
			if ("*".equals(elem.getName())) {
				return false;
			}
		}
	}

	if (isExplicitlyNonCacheable(response))
		return false;

	return (cacheable || isExplicitlyCacheable(response));
}
 
Example 20
Source File: BinaryHttpResponseHandler.java    From android-project-wo2b with Apache License 2.0 4 votes vote down vote up
@Override
public final void sendResponseMessage(HttpResponse response) throws IOException {
    StatusLine status = response.getStatusLine();
    Header[] contentTypeHeaders = response.getHeaders(AsyncHttpClient.HEADER_CONTENT_TYPE);
    if (contentTypeHeaders.length != 1) {
        //malformed/ambiguous HTTP Header, ABORT!
        sendFailureMessage(
            status.getStatusCode(),
            response.getAllHeaders(),
            null,
            new HttpResponseException(
                status.getStatusCode(),
                "None, or more than one, Content-Type Header found!"
            )
        );
        return;
    }
    Header contentTypeHeader = contentTypeHeaders[0];
    boolean foundAllowedContentType = false;
    for (String anAllowedContentType : getAllowedContentTypes()) {
        try {
            if (Pattern.matches(anAllowedContentType, contentTypeHeader.getValue())) {
                foundAllowedContentType = true;
            }
        } catch (PatternSyntaxException e) {
            Log.e("BinaryHttpResponseHandler", "Given pattern is not valid: " + anAllowedContentType, e);
        }
    }
    if (!foundAllowedContentType) {
        //Content-Type not in allowed list, ABORT!
        sendFailureMessage(
            status.getStatusCode(),
            response.getAllHeaders(),
            null,
            new HttpResponseException(
                status.getStatusCode(),
                "Content-Type not allowed!"
            )
        );
        return;
    }
    super.sendResponseMessage(response);
}