title: 500 Internal error from HTTP POST request
body: <p>I am using below code to upload file using HTTP POST, but I am getting 500 Internal Server Error response from server.</p>
  
  <p>Can you please have a look and let me know which code part is culprit/missing. There is no error in HTTPS connection, I think some problem in Header so server is not accepting this request.</p>
  
  <pre><code>    // Check server address
      url = new URL("https://example.com");
      String protocol = url.getProtocol(); 
      String host = url.getHost();
      String serviceRoot = url.getPath();
  
      // Build POST request
      HttpPost post = new HttpPost(new URI(protocol + "://" + host
              + serviceRoot));
      post.addHeader("User-Agent", "Test");
      post.addHeader("Content-type", "multipart/form-data"); 
      post.addHeader("Accept", "image/jpg"); 
      String authValue = "Basic "
              + Base64
                      .encodeBase64ToString(("username" + ":"
                              + "password").getBytes()) + " " + "realm=\"example.com\"";
      if (authValue != null) {
          post.addHeader("Authorization", authValue);
      }
  
      File file = new File("/sdcard/Download/IMAG0306.jpg");
      FileBody data = new FileBody(file);
  
      String file_type = "jpg" ;
      String description = "Test";
  
      MultipartEntity reqEntity = new MultipartEntity();
      reqEntity.addPart("file_name", new StringBody( file.getName() ) );
      reqEntity.addPart("description", new StringBody(description));
      reqEntity.addPart("file_type", new StringBody(file_type));
      reqEntity.addPart("data", data);
  
      post.setEntity(reqEntity); 
  
      if (true) {
          String trace = "&gt;&gt;&gt; Send HTTP request:";
          trace += "\n " + post.getMethod() + " "
                  + post.getRequestLine().getUri();
          System.out.println(trace);
      }
  
      if (true) {
          String trace = "&lt;&lt;&lt; Send HTTP request--&gt;:";
          trace += "\n" + post.toString();
          Header[] headers = post.getAllHeaders();
          for (Header header : headers) {
              trace += "\n" + header.getName() + " " + header.getValue();
          }
          System.out.println(trace);
      }
  
      HttpClient httpClient = createHttpClient();
      // replace with your url
      // “Authorization”, “Basic ” + encodedUsernamePassword);
      if (httpClient != null) {
          response = httpClient.execute(post);
          if (true) {
              String trace = "&lt;&lt;&lt; Receive HTTP response:";
              trace += "\n" + response.getStatusLine().toString();
              Header[] headers = response.getAllHeaders();
              for (Header header : headers) {
                  trace += "\n" + header.getName() + " " + header.getValue();
              }
              System.out.println(trace);
          }
      } else {
          throw new IOException("HTTP client not found");
      }
  </code></pre>
  
  <p>Thanks</p>