/**
   * Generate http request entity from Spring Integration message.
   *
   * @param requestMessage
   * @param method
   * @return
   */
  private HttpEntity<?> generateRequest(Message<?> requestMessage, HttpMethod method) {
    HttpHeaders httpHeaders = new HttpHeaders();
    headerMapper.fromHeaders(requestMessage.getHeaders(), httpHeaders);

    Map<String, ?> messageHeaders = requestMessage.getHeaders();
    for (Entry<String, ?> header : messageHeaders.entrySet()) {
      if (!header.getKey().startsWith(CitrusMessageHeaders.PREFIX)
          && !MessageUtils.isSpringInternalHeader(header.getKey())
          && !httpHeaders.containsKey(header.getKey())) {
        httpHeaders.add(header.getKey(), header.getValue().toString());
      }
    }

    Object payload = requestMessage.getPayload();
    if (httpHeaders.getContentType() == null) {
      httpHeaders.setContentType(
          MediaType.parseMediaType(
              contentType.contains("charset") ? contentType : contentType + ";charset=" + charset));
    }

    if (HttpMethod.POST.equals(method) || HttpMethod.PUT.equals(method)) {
      return new HttpEntity<Object>(payload, httpHeaders);
    }

    return new HttpEntity<Object>(httpHeaders);
  }
 @Test
 public void contentType() {
   MediaType contentType = new MediaType("text", "html", Charset.forName("UTF-8"));
   headers.setContentType(contentType);
   assertEquals("Invalid Content-Type header", contentType, headers.getContentType());
   assertEquals(
       "Invalid Content-Type header", "text/html;charset=UTF-8", headers.getFirst("Content-Type"));
 }
  private HttpEntity<?> createHttpEntity(Object document) {

    if (document instanceof HttpEntity) {
      HttpEntity httpEntity = (HttpEntity) document;
      Assert.isTrue(
          httpEntity.getHeaders().getContentType().equals(MediaType.APPLICATION_JSON),
          "HttpEntity payload with non application/json content type found.");
      return httpEntity;
    }

    HttpHeaders httpHeaders = new HttpHeaders();
    httpHeaders.setContentType(MediaType.APPLICATION_JSON);
    HttpEntity<Object> httpEntity = new HttpEntity<Object>(document, httpHeaders);

    return httpEntity;
  }
  @Override
  @Nullable
  protected ResponseEntity doInBackground(Void... params) {
    try {
      HttpHeaders headers = new HttpHeaders();
      headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
      HttpEntity<String> request = new HttpEntity<>(headers);

      RestTemplate restTemplate = new RestTemplate();
      restTemplate.getMessageConverters().add(new StringHttpMessageConverter());
      restTemplate.getMessageConverters().add(new FormHttpMessageConverter());
      ResponseEntity response = restTemplate.postForEntity(host, request, ResponseEntity.class);
      return response;
    } catch (Exception e) {
      Log.e("Http Request Exception", e.getMessage(), e);
    }
    return null;
  }
  /**
   * Generates the Http response message from given Spring Integration message.
   *
   * @param responseMessage message received from the message handler
   * @return an HTTP entity as response
   */
  private ResponseEntity<String> generateResponse(Message<?> responseMessage) {
    if (responseMessage == null) {
      return new ResponseEntity<String>(HttpStatus.OK);
    }

    HttpHeaders httpHeaders = new HttpHeaders();
    headerMapper.fromHeaders(responseMessage.getHeaders(), httpHeaders);

    Map<String, ?> messageHeaders = responseMessage.getHeaders();
    for (Entry<String, ?> header : messageHeaders.entrySet()) {
      if (!header.getKey().startsWith(CitrusMessageHeaders.PREFIX)
          && !MessageUtils.isSpringInternalHeader(header.getKey())
          && !httpHeaders.containsKey(header.getKey())) {
        httpHeaders.add(header.getKey(), header.getValue().toString());
      }
    }

    if (httpHeaders.getContentType() == null) {
      httpHeaders.setContentType(
          MediaType.parseMediaType(
              contentType.contains("charset") ? contentType : contentType + ";charset=" + charset));
    }

    HttpStatus status = HttpStatus.OK;
    if (responseMessage.getHeaders().containsKey(CitrusHttpMessageHeaders.HTTP_STATUS_CODE)) {
      status =
          HttpStatus.valueOf(
              Integer.valueOf(
                  responseMessage
                      .getHeaders()
                      .get(CitrusHttpMessageHeaders.HTTP_STATUS_CODE)
                      .toString()));
    }

    responseCache =
        new ResponseEntity<String>(responseMessage.getPayload().toString(), httpHeaders, status);

    return responseCache;
  }
 private Ngsi2Client() {
   // set default headers for Content-Type and Accept to application/JSON
   httpHeaders = new HttpHeaders();
   httpHeaders.setContentType(MediaType.APPLICATION_JSON);
   httpHeaders.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
 }
 public void writeTo(OutputStream outputstream)
 {
     OutputStreamWriter outputstreamwriter = new OutputStreamWriter(outputstream, getCharset());
     String s = getBoundary();
     Iterator iterator = parts.iterator();
     while (iterator.hasNext()) 
     {
         Object obj1 = (Part)iterator.next();
         HttpHeaders httpheaders = (new HttpHeaders()).setAcceptEncoding(null);
         if (((Part) (obj1)).headers != null)
         {
             httpheaders.fromHttpHeaders(((Part) (obj1)).headers);
         }
         httpheaders.setContentEncoding(null).setUserAgent(null).setContentType(null).setContentLength(null).set("Content-Transfer-Encoding", null);
         Object obj = ((Part) (obj1)).content;
         if (obj != null)
         {
             httpheaders.set("Content-Transfer-Encoding", Arrays.asList(new String[] {
                 "binary"
             }));
             httpheaders.setContentType(((HttpContent) (obj)).getType());
             obj1 = ((Part) (obj1)).encoding;
             long l;
             if (obj1 == null)
             {
                 l = ((HttpContent) (obj)).getLength();
             } else
             {
                 httpheaders.setContentEncoding(((HttpEncoding) (obj1)).getName());
                 obj1 = new HttpEncodingStreamingContent(((htb) (obj)), ((HttpEncoding) (obj1)));
                 l = AbstractHttpContent.computeLength(((HttpContent) (obj)));
                 obj = obj1;
             }
             obj1 = obj;
             if (l != -1L)
             {
                 httpheaders.setContentLength(Long.valueOf(l));
                 obj1 = obj;
             }
         } else
         {
             obj1 = null;
         }
         outputstreamwriter.write("--");
         outputstreamwriter.write(s);
         outputstreamwriter.write("\r\n");
         HttpHeaders.serializeHeadersForMultipartRequests(httpheaders, null, null, outputstreamwriter);
         if (obj1 != null)
         {
             outputstreamwriter.write("\r\n");
             outputstreamwriter.flush();
             ((htb) (obj1)).writeTo(outputstream);
         }
         outputstreamwriter.write("\r\n");
     }
     outputstreamwriter.write("--");
     outputstreamwriter.write(s);
     outputstreamwriter.write("--");
     outputstreamwriter.write("\r\n");
     outputstreamwriter.flush();
 }