title: LoopJ AndroidAsyncHttp Can't POST Image With Basic Auth
body: <p>I am trying to upload an image to a PHP file on a server using the POST method.  I have been trying to do this using LoopJ AndroidAsyncHttp with no success.  The server also requires a basic auth username and password. So far, I have been able to successfully POST the regular data parameters (These are simple string key-valued pairs like: "name":"joe") and get a response from the server. However, as soon as I try to attach the image to the POST request, the request fails giving me the following errors:</p>
  
  <pre><code>Error Message: null
  Error Cause: org.apache.http.client.NonRepeatableRequestException: Cannot retry request with a non-repeatable request entity
  </code></pre>
  
  <p>The code that I am using follows the examples given at <a href="http://loopj.com/android-async-http/" rel="nofollow">http://loopj.com/android-async-http/</a> very closely. Here is the code that I am using:</p>
  
  <pre><code>RequestParams params = new RequestParams();
  params.put("name",name);
  
  
  String path = "/path/to/img";
  File myFile = new File(path, "picture.png");
  
  if( myFile.exists() ) {
      try {
          params.put("picture", myFile);
      } catch(FileNotFoundException e) {
          Log.d("App","Error Attaching Picture: " + e.toString());
      }
  } else {
      Log.d("App","File DOES NOT exist");
  }
  
  
  String urlString = "url-to-server";
  AsyncHttpClient client = new AsyncHttpClient();
  client.setBasicAuth("User", "Pass");
  client.post(urlString, params, new AsyncHttpResponseHandler(){
          @Override
          public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
              super.onSuccess(statusCode, headers, responseBody);
          }
  
          @Override
          public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
              super.onFailure(statusCode, headers, responseBody, error);
              Log.d("App","Upload Failed!");
              Log.d("App","Error Message: " + error.getMessage());
              Log.d("App", "Error Cause: " + error.getCause());                   
          }
  
          @Override
          public void onStart() {
              super.onStart();
          }
  });
  </code></pre>
  
  <p>So what am I doing wrong here?
  I have also double checked and the file that I am reading to get the image does exist and it does have data in it, so I have ruled that out as a potential cause.
  I have been struggling with this issue a little too long now. 
  Thanks in advance to anyone who can help!</p>