コード例 #1
0
  // Interface to AsyncHttpRequest
  @Override
  protected void sendResponseMessage(HttpResponse response) {
    StatusLine status = response.getStatusLine();
    Header[] contentTypeHeaders = response.getHeaders("Content-Type");
    byte[] responseBody = null;
    if (contentTypeHeaders.length != 1) {
      // malformed/ambiguous HTTP Header, ABORT!
      sendFailureMessage(
          status.getStatusCode(),
          response.getAllHeaders(),
          new HttpResponseException(
              status.getStatusCode(), "None, or more than one, Content-Type Header found!"),
          (String) null);
      return;
    }
    Header contentTypeHeader = contentTypeHeaders[0];
    boolean foundAllowedContentType = false;
    for (String anAllowedContentType : mAllowedContentTypes) {
      if (Pattern.matches(anAllowedContentType, contentTypeHeader.getValue())) {
        foundAllowedContentType = true;
      }
    }
    if (!foundAllowedContentType) {
      // Content-Type not in allowed list, ABORT!
      sendFailureMessage(
          status.getStatusCode(),
          response.getAllHeaders(),
          new HttpResponseException(status.getStatusCode(), "Content-Type not allowed!"),
          (String) null);
      return;
    }
    try {
      HttpEntity entity = null;
      HttpEntity temp = response.getEntity();
      if (temp != null) {
        entity = new BufferedHttpEntity(temp);
      }
      responseBody = EntityUtils.toByteArray(entity);
    } catch (IOException e) {
      sendFailureMessage(status.getStatusCode(), response.getAllHeaders(), e, (byte[]) null);
    }

    if (status.getStatusCode() >= 300) {
      sendFailureMessage(
          status.getStatusCode(),
          response.getAllHeaders(),
          new HttpResponseException(status.getStatusCode(), status.getReasonPhrase()),
          responseBody);
    } else {
      sendSuccessMessage(status.getStatusCode(), responseBody);
    }
  }
コード例 #2
0
  private void processRequest(HttpRequest request, Socket client)
      throws IllegalStateException, IOException {
    if (request == null) {
      return;
    }
    Log.d(LOG_TAG, "processing");
    String url = request.getRequestLine().getUri();
    HttpResponse realResponse = download(url);
    if (realResponse == null) {
      return;
    }

    Log.d(LOG_TAG, "downloading...");

    BufferedInputStream data = new BufferedInputStream(realResponse.getEntity().getContent());
    StatusLine line = realResponse.getStatusLine();
    HttpResponse response = new BasicHttpResponse(line);
    response.setHeaders(realResponse.getAllHeaders());

    Log.d(LOG_TAG, "reading headers");
    StringBuilder httpString = new StringBuilder();
    httpString.append(response.getStatusLine().toString());

    httpString.append("\n");
    for (Header h : response.getAllHeaders()) {
      httpString.append(h.getName()).append(": ").append(h.getValue()).append("\n");
    }
    httpString.append("\n");
    Log.d(LOG_TAG, "headers done");

    try {
      byte[] buffer = httpString.toString().getBytes();
      int readBytes;
      Log.d(LOG_TAG, "writing to client");

      BufferedOutputStream bos = new BufferedOutputStream(client.getOutputStream());
      bos.write(buffer, 0, buffer.length);

      // Start streaming content.
      byte[] buff = new byte[1024 * 50];
      while (isRunning && (readBytes = data.read(buff, 0, buff.length)) != -1) {
        bos.write(buff, 0, readBytes);
      }
    } catch (Exception e) {
      Log.e("", e.getMessage(), e);
    } finally {
      if (data != null) {
        data.close();
      }
      client.close();
    }
  }
  /**
   * This method processes the response and extracts the JSON string from the HTTP response code.
   *
   * @param httpResponse The HttpResponse returned
   */
  protected RestClientResponse processHttpResponse(HttpResponse httpResponse) throws Exception {

    final String json;

    if (httpResponse == null) {
      LOGGER.error(NULL_HTTP_RESPONSE.getLogMessage(commandName));
      throw new JsonReadException(NULL_HTTP_RESPONSE);
    }

    final int httpStatusCode = httpResponse.getStatusLine().getStatusCode();
    if (httpStatusCode == HttpStatus.SC_NO_CONTENT && httpResponse.getEntity() == null) {
      LOGGER.debug("Http No Content response from the {} resource with null payload.", commandName);
      return null;
    }

    LOGGER.debug("HTTP status code returned by the REST resource is --> {}", httpStatusCode);
    HttpEntity entity = httpResponse.getEntity();

    try {
      json = EntityUtils.toString(entity, "UTF-8");
      LOGGER.debug(httpResponse.getStatusLine().toString());
    } catch (ParseException | IllegalArgumentException | IOException ex) {
      LOGGER.error(JSON_READ_FAILED.getLogMessage(commandName), ex);
      throw new JsonReadException(JSON_READ_FAILED, ex);
    }

    return new RestClientResponse(json, httpStatusCode, httpResponse.getAllHeaders());
  }
コード例 #4
0
  @Test
  public void testGet() throws ClientProtocolException, IOException, URISyntaxException {
    HttpClient httpclient = new DefaultHttpClient();
    URIBuilder builder = new URIBuilder();
    builder.setScheme("http").setHost("localhost").setPort(8080).setPath("/immortal/register");
    builder.setParameter("userid", "value1").setParameter("username", "用户名");
    URI uri = builder.build();

    HttpGet httpget = new HttpGet(uri);

    HttpResponse response = httpclient.execute(httpget);
    HttpEntity entity = response.getEntity();
    for (Header header : response.getAllHeaders()) {
      System.out.println(header);
    }
    System.out.println(response.getStatusLine());
    System.out.println(HttpStatus.SC_OK);

    if (entity != null) {
      InputStream instream = entity.getContent();
      InputStreamReader reader = new InputStreamReader(instream);
      try {
        while (instream.available() > 0) {
          System.out.print((char) instream.read());
        }
        int c;
        StringBuilder sb = new StringBuilder();
        while ((c = reader.read()) > -1) sb.append((char) c);
        System.out.println(sb);
      } finally {
        reader.close();
      }
    }
  }
コード例 #5
0
ファイル: Main.java プロジェクト: jurez12/AutomationFramework
  public static void headerRequest() {
    try {

      HttpClient client = HttpClientBuilder.create().build();
      HttpGet request = new HttpGet("http://mkyong.com");
      HttpResponse response = client.execute(request);

      System.out.println("Printing Response Header...\n");

      Header[] headers = response.getAllHeaders();
      for (Header header : headers) {
        System.out.println("Key : " + header.getName() + " ,Value : " + header.getValue());
      }

      System.out.println("\nGet Response Header By Key ...\n");
      String server = response.getFirstHeader("Server").getValue();
      if (server == null) {
        System.out.println("Key 'Server' is not found!");
      } else {
        System.out.println("Server - " + server);
      }
      System.out.println("\n Done");
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
コード例 #6
0
ファイル: SecondTab.java プロジェクト: poppito/syncapp
    @Override
    protected String doInBackground(String... url) {

      if (allPhoneContacts != null) {
        allPhoneContacts.clear();
      }

      if (syncedContacts != null) {
        syncedContacts.clear();
      }

      String resp = "";
      Header[] responseHeaders = null;
      HttpParams httpParams = new BasicHttpParams();
      HttpConnectionParams.setConnectionTimeout(httpParams, TIMEOUT_MILLSEC);
      HttpGet request = new HttpGet(url[0]);
      MyHttpClient Client = LogonClass.Client;
      Client.putContext(context);
      try {
        request.setHeader("syncstatus", "True");
        HttpResponse response = Client.execute(request);
        resp = EntityUtils.toString(response.getEntity());
        responseHeaders = response.getAllHeaders();
      } catch (Exception e) {

        resp = "none is righteous";
      }

      Log.v(TAG, "response is " + resp);
      return resp;
    }
コード例 #7
0
  /**
   * Writes the specified TaskResult data to the channel output. Only the raw output data is written
   * and rest of the TaskResult fields are ignored
   *
   * @param ctx the ChannelHandlerContext
   * @param event the ChannelEvent
   * @throws Exception in case of any errors
   */
  private void writeCommandExecutionResponse(
      ChannelHandlerContext ctx, ChannelEvent event, HttpResponse response) throws Exception {
    // Don't write anything if the response is null
    if (response == null) {
      // write empty response
      event
          .getChannel()
          .write(new DefaultHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.NO_CONTENT))
          .addListener(ChannelFutureListener.CLOSE);
      return;
    }
    org.jboss.netty.handler.codec.http.HttpResponse httpResponse =
        new DefaultHttpResponse(
            HttpVersion.HTTP_1_1,
            HttpResponseStatus.valueOf(response.getStatusLine().getStatusCode()));
    // write headers
    for (Header header : response.getAllHeaders()) {
      if (!RoutingHttpChannelHandler.REMOVE_HEADERS.contains(header.getName())) {
        httpResponse.setHeader(header.getName(), header.getValue());
      }
    }

    // write entity
    HttpEntity responseEntity = response.getEntity();
    byte[] responseData = EntityUtils.toByteArray(responseEntity);
    httpResponse.setContent(ChannelBuffers.copiedBuffer(responseData));
    // write response
    event.getChannel().write(httpResponse).addListener(ChannelFutureListener.CLOSE);
  }
  /**
   * Intialise myExperiment session
   *
   * @return Session handler string
   */
  public void createNewMyExperimentSession() throws DefaultHttpClientException {
    // get myExperiment session
    String myExperimentSessionStr = null;
    try {
      String sessRequest =
          "<session><username>"
              + user
              + "</username><password>"
              + password
              + "</password></session>";
      HttpResponse sessionResponse =
          myExpRestClient.executeStringPost("/session", sessRequest, ContentType.APPLICATION_XML);
      InputStream is = sessionResponse.getEntity().getContent();
      Header[] headers = sessionResponse.getAllHeaders();

      for (int i = 0; i < headers.length; i++) {
        Header h = headers[i];
        if (h.getName().equals("Set-Cookie")) {
          String val = h.getValue();
          int end = val.indexOf(";");
          myExperimentSessionStr = val.substring(0, end);
        }
      }
      EntityUtils.consume(sessionResponse.getEntity());
      myExperimentSession = myExperimentSessionStr;
    } catch (Exception ex) {
      throw new DefaultHttpClientException(ex.getMessage());
    }
  }
コード例 #9
0
ファイル: CougarHelpers.java プロジェクト: pmvilaca/cougar
  private HttpResponseBean buildHttpResponseBean(
      HttpResponse httpResponse, String response, Date requestTime, Date responseTime) {

    HttpResponseBean httpResponseBean = new HttpResponseBean();

    Header[] headersArray = httpResponse.getAllHeaders();
    Map<String, String> headersMap = new HashMap<String, String>();
    for (Header header : headersArray) {
      String[] headerAttributes = header.toString().split(": ");
      headersMap.put(headerAttributes[0], headerAttributes[1].replace("\r\n", ""));
    }
    httpResponseBean.setResponseHeaders(headersMap);

    httpResponseBean.setHttpStatusCode(httpResponse.getStatusLine().getStatusCode());
    httpResponseBean.setHttpStatusText(httpResponse.getStatusLine().getReasonPhrase());

    httpResponseBean.setRequestTime(new Timestamp(requestTime.getTime()));
    httpResponseBean.setResponseTime(new Timestamp(responseTime.getTime()));

    if ((response != null) && (!response.equalsIgnoreCase(""))) {
      httpResponseBean.setResponseObject(response);
    } else {
      httpResponseBean.setResponseObject(null);
    }

    return httpResponseBean;
  }
コード例 #10
0
  @Test
  public void GetRequest()
      throws URISyntaxException, ClientProtocolException, IOException, ParserConfigurationException,
          UnsupportedOperationException, SAXException {
    HttpUriRequest request = new HttpGet(url);
    URIBuilder uri = new URIBuilder(request.getURI()).addParameter("CountryName", country);
    ((HttpRequestBase) request).setURI(uri.build());

    // Testing headers
    HttpResponse response = client.execute(request);
    Header[] headers = response.getAllHeaders();
    for (Header head : headers) {
      System.out.println(head.getName() + "---" + head.getValue());
    }
    System.out.println("================================================");

    // Testing response
    // parsing xml
    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
    Document doc = dBuilder.parse(response.getEntity().getContent());

    // Printing root
    doc.getDocumentElement().normalize();
    NodeList nList = doc.getElementsByTagName("string");
    Node aNode = nList.item(0);
    Element element = (Element) aNode;
    System.out.println(element.getFirstChild());
  }
コード例 #11
0
 @Override
 public void process(HttpResponse response, HttpContext context)
     throws HttpException, IOException {
   CookieStore cookieStore = (CookieStore) context.getAttribute(ClientContext.COOKIE_STORE);
   for (Header header : response.getAllHeaders()) {
     if (!header.getName().equalsIgnoreCase("Set-Cookie")) {
       continue;
     }
     Matcher matcher = pattern.matcher(header.getValue());
     if (!matcher.find()) {
       continue;
     }
     for (Cookie cookie : cookieStore.getCookies()) {
       if (cookie.getName().equalsIgnoreCase(matcher.group(1))) {
         if (cookie instanceof BasicClientCookie) {
           ((BasicClientCookie) cookie).setValue('"' + cookie.getValue() + '"');
         } else if (cookie instanceof BasicClientCookie2) {
           ((BasicClientCookie2) cookie).setValue('"' + cookie.getValue() + '"');
         } else {
           Log.w(TAG, "unhandled cookie implementation " + cookie.getClass().getName());
         }
         break;
       }
     }
   }
 }
コード例 #12
0
 public final void sendResponseMessage(HttpResponse paramHttpResponse) {
   int i = 0;
   StatusLine localStatusLine = paramHttpResponse.getStatusLine();
   Header[] arrayOfHeader = paramHttpResponse.getHeaders("Content-Type");
   if (arrayOfHeader.length != 1) {
     sendFailureMessage(
         localStatusLine.getStatusCode(),
         paramHttpResponse.getAllHeaders(),
         null,
         new HttpResponseException(
             localStatusLine.getStatusCode(),
             "None, or more than one, Content-Type Header found!"));
     return;
   }
   Header localHeader = arrayOfHeader[0];
   String[] arrayOfString = getAllowedContentTypes();
   int j = arrayOfString.length;
   int k = 0;
   for (; ; ) {
     if (k < j) {
       String str = arrayOfString[k];
       try {
         boolean bool = Pattern.matches(str, localHeader.getValue());
         if (bool) {
           i = 1;
         }
         k++;
       } catch (PatternSyntaxException localPatternSyntaxException) {
         for (; ; ) {
           Log.e(
               "BinaryHttpResponseHandler",
               "Given pattern is not valid: " + str,
               localPatternSyntaxException);
         }
       }
     }
   }
   if (i == 0) {
     sendFailureMessage(
         localStatusLine.getStatusCode(),
         paramHttpResponse.getAllHeaders(),
         null,
         new HttpResponseException(localStatusLine.getStatusCode(), "Content-Type not allowed!"));
     return;
   }
   super.sendResponseMessage(paramHttpResponse);
 }
コード例 #13
0
  @Override
  protected Boolean doInBackground(String... params) {
    Instrumentation.startTimer("UserLoginTask");

    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost =
        new HttpPost(GlobalDataProvider.getInstance().getRestServiceUrl() + "user/login");

    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
    nameValuePairs.add(new BasicNameValuePair("username", params[0]));
    nameValuePairs.add(new BasicNameValuePair("password", params[1]));
    try {
      httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
      Log.d(TAG, httppost.getRequestLine().getUri());

      HttpResponse response = httpclient.execute(httppost);
      if (response != null && response.getEntity() != null) {
        String respStr = EntityUtils.toString(response.getEntity());
        if (respStr != null && respStr.equalsIgnoreCase("Success")) {
          Header[] headers = response.getAllHeaders();
          for (Header header : headers) {
            if ("set-cookie".equalsIgnoreCase(header.getName())) {
              String headerValue = header.getValue();
              if (headerValue.startsWith(JSESSIONID)) {
                String jsessionId = headerValue.substring(0, headerValue.indexOf(';'));
                GlobalDataProvider.getInstance().setSessionId(jsessionId);
              }
            }
          }
          // TODO: Future enhancements - register the new account here??
          success = true;
          Log.d("ADInstrumentation", "success");
          return true;
        } else {
          error = true;
        }
      } else {
        exceptionOccured = true;
        exceptionMessage = "Unable to connect to server";
      }

    } catch (UnsupportedEncodingException e1) {
      exceptionOccured = true;
      e1.getLocalizedMessage();
      e1.printStackTrace();
    } catch (ClientProtocolException e) {
      exceptionOccured = true;
      exceptionMessage = e.getLocalizedMessage();
      e.printStackTrace();
    } catch (IOException e) {
      exceptionOccured = true;
      exceptionMessage = e.getLocalizedMessage();
      e.printStackTrace();
    } finally {
      Instrumentation.stopTimer("UserLoginTask");
    }
    Log.d("ADInstrumentation", "failure");
    return false;
  }
コード例 #14
0
  public static CaseInsensitiveMap<String> extractHeaders(HttpResponse response) {
    final CaseInsensitiveMap<String> headers = new CaseInsensitiveMap<String>();

    for (Header header : response.getAllHeaders()) {
      headers.add(header.getName(), header.getValue());
    }
    return headers;
  }
コード例 #15
0
ファイル: HTTP.java プロジェクト: ChrisCinelli/native-android
  public Response makeRequest(
      Methods method, URI uri, HashMap<String, String> requestHeaders, String data) {

    HttpRequestBase request = null;

    try {
      if (method == Methods.GET) {
        request = new HttpGet();
      } else if (method == Methods.POST) {
        request = new HttpPost();
        if (data != null) {
          ((HttpPost) request).setEntity(new StringEntity(data, "UTF-8"));
        }
      } else if (method == Methods.PUT) {
        request = new HttpPut();
        if (data != null) {
          ((HttpPut) request).setEntity(new StringEntity(data, "UTF-8"));
        }
      } else if (method == Methods.DELETE) {
        request = new HttpDelete();
      }
    } catch (UnsupportedEncodingException e) {
      logger.log(e);
    }
    request.setURI(uri);
    AndroidHttpClient client = AndroidHttpClient.newInstance(userAgent);
    if (requestHeaders != null) {
      for (Map.Entry<String, String> entry : requestHeaders.entrySet()) {
        request.addHeader(new BasicHeader(entry.getKey(), entry.getValue()));
      }
    }

    HttpResponse response = null;
    Response retVal = new Response();
    retVal.headers = new HashMap<String, String>();
    try {
      response = client.execute(request);
    } catch (SocketTimeoutException e) {
      // forget it--we don't care that the user couldn't connect
      // TODO hand this back as an error to JS
    } catch (IOException e) {
      if (!caughtIOException) {
        caughtIOException = true;
        logger.log(e);
      }
    } catch (Exception e) {
      logger.log(e);
    }
    if (response != null) {
      retVal.status = response.getStatusLine().getStatusCode();
      retVal.body = readContent(response);
      for (Header header : response.getAllHeaders()) {
        retVal.headers.put(header.getName(), header.getValue());
      }
    }
    client.close();
    return retVal;
  }
コード例 #16
0
 public Map<String, List<String>> getHeaderFields() {
   Map<String, List<String>> ret = new HashMap<String, List<String>>();
   for (Header hdr : resp.getAllHeaders()) {
     List<String> list = new LinkedList<String>();
     for (HeaderElement hdrElem : hdr.getElements()) list.add(hdrElem.toString());
     ret.put(hdr.getName(), list);
   }
   return ret;
 }
コード例 #17
0
  public Multimap<String, String> headers() {
    ImmutableListMultimap.Builder<String, String> builder = ImmutableListMultimap.builder();

    for (Header header : httpResponse.getAllHeaders()) {
      builder.put(header.getName(), header.getValue());
    }

    return builder.build();
  }
コード例 #18
0
 @Override
 public Map<String, String> handleResponse(HttpResponse response) throws IOException {
   this.validateResponse(response);
   Map<String, String> headers = new HashMap<String, String>();
   for (Header h : response.getAllHeaders()) {
     headers.put(h.getName(), h.getValue());
   }
   return headers;
 }
コード例 #19
0
ファイル: HttpUtil.java プロジェクト: victorlh/Leo
 /**
  * 从响应结果中获取Header信息,返回map表
  *
  * @param res
  * @return Map<String, String>
  */
 private Map<String, String> getResHeader(HttpResponse res) {
   Map<String, String> headerRes = new TreeMap<String, String>();
   if (null == res) return headerRes;
   //		if (res.getStatusLine().getStatusCode() == 200) {//判断返回码,获取header信息
   Header[] headers = res.getAllHeaders();
   for (int i = 0; i < headers.length; i++) {
     headerRes.put(headers[i].getName(), headers[i].getValue());
   }
   return headerRes;
 }
コード例 #20
0
 private HttpHeaders headersFrom(HttpResponse httpResponse) {
   return new HttpHeaders(
       transform(
           asList(httpResponse.getAllHeaders()),
           new Function<Header, HttpHeader>() {
             public HttpHeader apply(Header header) {
               return new HttpHeader(header.getName(), header.getValue());
             }
           }));
 }
コード例 #21
0
  private HttpResponse makeResponse(org.apache.http.HttpResponse hcResponse) throws IOException {
    HttpResponseBuilder builder = new HttpResponseBuilder();
    for (Header header : hcResponse.getAllHeaders()) {
      builder.addHeader(header.getName(), header.getValue());
    }

    return builder
        .setHttpStatusCode(hcResponse.getStatusLine().getStatusCode())
        .setResponse(IOUtils.toByteArray(hcResponse.getEntity().getContent()))
        .create();
  }
コード例 #22
0
ファイル: RequestRenderer.java プロジェクト: troiska/Vega
 public String renderResponseText(HttpResponse response) {
   StringBuilder sb = new StringBuilder();
   sb.append(renderResponseStartLine(response));
   sb.append(renderHeaders(response.getAllHeaders()));
   final String body = renderEntityIfAscii(response.getEntity());
   if (body != null) {
     sb.append("\n");
     sb.append(body);
   }
   return sb.toString();
 }
コード例 #23
0
 // Interface to AsyncHttpRequest
 void sendResponseMessage(HttpResponse response) throws IOException {
   // do not process if request has been cancelled
   if (!Thread.currentThread().isInterrupted()) {
     StatusLine status = response.getStatusLine();
     byte[] responseBody;
     responseBody = getResponseData(response.getEntity());
     // additional cancellation check as getResponseData() can take non-zero time to process
     if (!Thread.currentThread().isInterrupted()) {
       if (status.getStatusCode() >= 300) {
         sendFailureMessage(
             status.getStatusCode(),
             response.getAllHeaders(),
             responseBody,
             new HttpResponseException(status.getStatusCode(), status.getReasonPhrase()));
       } else {
         sendSuccessMessage(status.getStatusCode(), response.getAllHeaders(), responseBody);
       }
     }
   }
 }
  private static void logResponseHeaders(final HttpResponse response) {
    if (!logger.isTraceEnabled()) {
      return;
    }

    StringBuilder headers = new StringBuilder();
    for (final Header header : response.getAllHeaders()) {
      headers.append(header.getName()).append(": ").append(header.getValue()).append("\n");
    }

    logger.trace("Response headers:\n{}", headers);
  }
コード例 #25
0
ファイル: HttpUtil.java プロジェクト: krislq/HistoryOfToday
 /**
  * deal with the response
  *
  * @param response
  * @param clazz
  * @return
  * @throws IllegalStateException
  * @throws ParseException
  * @throws IOException
  */
 private static String processResponse(HttpResponse response)
     throws HttpResponseException, IllegalStateException, IOException {
   int statusCode = response.getStatusLine().getStatusCode();
   L.e("status--->code-->" + statusCode);
   Header[] headers = response.getAllHeaders();
   // if the return code is between 200 and 300. the request is success
   if (HttpStatus.SC_OK <= statusCode && statusCode < HttpStatus.SC_MULTIPLE_CHOICES) {
     return processEntity(response);
   } else {
     throw new HttpResponseException(statusCode, processEntity(response), headers);
   }
 }
コード例 #26
0
  @Test(
      groups = {"wso2.am"},
      description = "Checking CORS headers in response",
      dependsOnMethods = "CheckCORSHeadersInPreFlightResponse")
  public void CheckCORSHeadersInResponse() throws Exception {
    HttpClient httpclient = HttpClientBuilder.create().build();
    HttpGet get = new HttpGet(getAPIInvocationURLHttp(API_CONTEXT, API_VERSION));
    get.addHeader("Origin", "http://localhost");
    get.addHeader("Authorization", "Bearer " + accessToken);

    HttpResponse response = httpclient.execute(get);

    assertEquals(
        response.getStatusLine().getStatusCode(), HTTP_RESPONSE_CODE_OK, "Response code mismatch.");

    Header[] responseHeaders = response.getAllHeaders();

    log.info("Response Headers: CheckCORSHeadersInResponse");
    for (Header header : responseHeaders) {
      log.info(header.getName() + " : " + header.getValue());
    }

    Header header = pickHeader(responseHeaders, ACCESS_CONTROL_ALLOW_ORIGIN_HEADER);
    assertNotNull(
        header, ACCESS_CONTROL_ALLOW_ORIGIN_HEADER + " header is not available in the response.");
    assertEquals(
        header.getValue(),
        ACCESS_CONTROL_ALLOW_ORIGIN_HEADER_VALUE,
        ACCESS_CONTROL_ALLOW_ORIGIN_HEADER + " header value mismatch.");

    header = pickHeader(responseHeaders, ACCESS_CONTROL_ALLOW_METHODS_HEADER);
    assertNotNull(
        header, ACCESS_CONTROL_ALLOW_METHODS_HEADER + " header is not available in the response.");
    assertEquals(
        header.getValue(),
        ACCESS_CONTROL_ALLOW_METHODS_HEADER_VALUE,
        ACCESS_CONTROL_ALLOW_METHODS_HEADER + " header value mismatch.");

    header = pickHeader(responseHeaders, ACCESS_CONTROL_ALLOW_HEADERS_HEADER);
    assertNotNull(
        header, ACCESS_CONTROL_ALLOW_HEADERS_HEADER + " header is not available in the response.");
    assertEquals(
        header.getValue(),
        ACCESS_CONTROL_ALLOW_HEADERS_HEADER_VALUE,
        ACCESS_CONTROL_ALLOW_HEADERS_HEADER + " header value mismatch.");

    assertNull(
        pickHeader(responseHeaders, ACCESS_CONTROL_ALLOW_CREDENTIALS_HEADER),
        ACCESS_CONTROL_ALLOW_CREDENTIALS_HEADER
            + " header is available in the response, "
            + "but it should not be.");
  }
コード例 #27
0
  /**
   * @param response The response to parse
   * @return A HttpResponse object made by consuming the response of the given HttpMethod.
   * @throws IOException when problems occur processing the body content
   */
  private HttpResponse makeResponse(org.apache.http.HttpResponse response) throws IOException {
    HttpResponseBuilder builder = new HttpResponseBuilder();

    if (response.getAllHeaders() != null) {
      for (Header h : response.getAllHeaders()) {
        if (h.getName() != null) builder.addHeader(h.getName(), h.getValue());
      }
    }

    HttpEntity entity = response.getEntity();

    if (maxObjSize > 0 && entity != null && entity.getContentLength() > maxObjSize) {
      return HttpResponse.badrequest("Exceeded maximum number of bytes - " + maxObjSize);
    }

    byte[] responseBytes = (entity == null) ? null : toByteArraySafe(entity);

    return builder
        .setHttpStatusCode(response.getStatusLine().getStatusCode())
        .setResponse(responseBytes)
        .create();
  }
コード例 #28
0
 private HttpResponse forward(
     HttpClient httpclient,
     String verb,
     String uri,
     HttpServletRequest request,
     MultiValueMap<String, String> headers,
     MultiValueMap<String, String> params,
     InputStream requestEntity)
     throws Exception {
   Map<String, Object> info = this.helper.debug(verb, uri, headers, params, requestEntity);
   URL host = RequestContext.getCurrentContext().getRouteHost();
   HttpHost httpHost = getHttpHost(host);
   uri = StringUtils.cleanPath(host.getPath() + uri);
   HttpRequest httpRequest;
   switch (verb.toUpperCase()) {
     case "POST":
       HttpPost httpPost = new HttpPost(uri + getQueryString());
       httpRequest = httpPost;
       httpPost.setEntity(new InputStreamEntity(requestEntity, request.getContentLength()));
       break;
     case "PUT":
       HttpPut httpPut = new HttpPut(uri + getQueryString());
       httpRequest = httpPut;
       httpPut.setEntity(new InputStreamEntity(requestEntity, request.getContentLength()));
       break;
     case "PATCH":
       HttpPatch httpPatch = new HttpPatch(uri + getQueryString());
       httpRequest = httpPatch;
       httpPatch.setEntity(new InputStreamEntity(requestEntity, request.getContentLength()));
       break;
     default:
       httpRequest = new BasicHttpRequest(verb, uri + getQueryString());
       log.debug(uri + getQueryString());
   }
   try {
     httpRequest.setHeaders(convertHeaders(headers));
     log.debug(httpHost.getHostName() + " " + httpHost.getPort() + " " + httpHost.getSchemeName());
     HttpResponse zuulResponse = forwardRequest(httpclient, httpHost, httpRequest);
     this.helper.appendDebug(
         info,
         zuulResponse.getStatusLine().getStatusCode(),
         revertHeaders(zuulResponse.getAllHeaders()));
     return zuulResponse;
   } finally {
     // When HttpClient instance is no longer needed,
     // shut down the connection manager to ensure
     // immediate deallocation of all system resources
     // httpclient.getConnectionManager().shutdown();
   }
 }
コード例 #29
0
  private static void printDebugInfo(HttpUriRequest request, HttpResponse response) {
    String br = System.getProperty("line.separator");
    StringBuffer builder = new StringBuffer();
    builder.append("URL: ");
    builder.append(request.getURI().toString());
    builder.append(br);
    builder.append("Request Headers: ");
    builder.append(headersToString(request.getAllHeaders()));
    builder.append(br);
    builder.append("Request Body: ");
    if (request instanceof HttpPost) {
      HttpPost post = (HttpPost) request;
      String body = "This body can't be outputted.";
      try {
        body = ResponseUtil.fromHttpEntityToString(post.getEntity(), "UTF-8");
      } catch (ResponseBodyParseException e) {
        Log.d(TAG, "Parsing request is failed.", e);
      }
      builder.append(body);
    } else {
      builder.append("No body by Get request.");
    }
    builder.append(br);
    builder.append("HTTP Status Code: ");
    builder.append(response.getStatusLine().getStatusCode());
    builder.append(br);
    builder.append("Response Headers: ");
    builder.append(headersToString(response.getAllHeaders()));
    builder.append(br);
    Header contentType = response.getFirstHeader("Content-Type");
    if (contentType != null && "application/json".equals(contentType.getValue())) {
      builder.append("Response Body: ");
      String body = "This body can't be outputted.";
      try {
        body = ResponseUtil.fromHttpEntityToString(response.getEntity(), "UTF-8");
        response.setEntity(new StringEntity(body, "UTF-8"));
      } catch (ResponseBodyParseException e) {
        Log.d(TAG, "Parsing response is failed.", e);
      } catch (UnsupportedEncodingException e) {
        Log.e(TAG, e.getMessage());
      }
      builder.append(body);
      builder.append(br);
    } else {
      builder.append("Response Body is binary data.");
      builder.append(br);
    }

    Log.d(TAG, builder.toString());
  }
コード例 #30
0
  private void removeCacheHeadersThatMatchResponse(
      List<Header> cacheEntryHeaderList, HttpResponse response) {
    for (Header responseHeader : response.getAllHeaders()) {
      ListIterator<Header> cacheEntryHeaderListIter = cacheEntryHeaderList.listIterator();

      while (cacheEntryHeaderListIter.hasNext()) {
        String cacheEntryHeaderName = cacheEntryHeaderListIter.next().getName();

        if (cacheEntryHeaderName.equals(responseHeader.getName())) {
          cacheEntryHeaderListIter.remove();
        }
      }
    }
  }