title: HttpURLConnection java.io.FileNotFoundException
body: <p>The code below works great if I connect to what seems to be Apache servers, however when I try to connect to my .Net server it throws an error. I am guessing it is a header requirement, but I can not seem to get a successful response no matter what I try.</p>
  
  <pre><code>public String Download(String Url)
  {
   String filepath=null;
   try {
    //set the download URL, a url that points to a file on the internet
    //this is the file to be downloaded
    URL url = new URL(Url);
    //create the new connection
    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
  
    //set up some things on the connection
    urlConnection.setRequestMethod("GET");
    urlConnection.setDoOutput(true); 
     //and connect!
    urlConnection.connect();
    //set the path where we want to save the file
    //in this case, going to save it on the root directory of the sd card.
    File SDCardRoot = Environment.getExternalStorageDirectory();
    //create a new file, specifying the path, and the filename
    //which we want to save the file as.
  
    String filename= "effortback.png";   // you can download to any type of file ex:.jpeg (image) ,.txt(text file),.mp3 (audio file)
    Log.i("Local filename:",""+filename);
    File file = new File(SDCardRoot + "/",filename);
  
    //=====================================
    if(file.createNewFile())
    {
     file.createNewFile();
    }
    //=====================================
  
    //this will be used to write the downloaded data into the file we created
    FileOutputStream fileOutput = new FileOutputStream(file);
  
    //this will be used in reading the data from the internet
    InputStream inputStream = urlConnection.getInputStream();
  
    //=====================================
    //this is the total size of the file
    int totalSize = urlConnection.getContentLength();
    //variable to store total downloaded bytes
    int downloadedSize = 0;
    //=====================================
  
    //create a buffer...
    byte[] buffer = new byte[2048];
    int bufferLength = 0; //used to store a temporary size of the buffer
  
    //now, read through the input buffer and write the contents to the file
    while ( (bufferLength = inputStream.read(buffer)) &gt; 0 ) {
     //add the data in the buffer to the file in the file output stream (the file on the sd card
     fileOutput.write(buffer, 0, bufferLength);
     //add up the size so we know how much is downloaded
     downloadedSize += bufferLength;
     //this is where you would do something to report the prgress, like this maybe
     Log.i("Progress:","downloadedSize:"+downloadedSize+"totalSize:"+ totalSize) ;
  
    }
    //close the output stream when done
    fileOutput.close();
    if(downloadedSize==totalSize)   filepath=file.getPath();
  
   //catch some possible errors...
   } catch (MalformedURLException e) {
    e.printStackTrace();
    Log.i("URL-ERROR:",e.toString());
   } catch (IOException e) {
    filepath=null;
    e.printStackTrace();
    Log.i("IO-ERROR:",e.toString());
   }
   Log.i("filepath:"," "+filepath) ;
  
   return filepath;
  
  }
  </code></pre>
  
  <p>Errors range from:</p>
  
  <pre><code>java.io.FileNotFoundException  //I always get this with either one of the below
     org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1061)
  
  //or this one below
  libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionTmpl.java:186)
  </code></pre>
  
  <p>It seems that no matter what I try I can not get it to work. Again, it works if I try to download an image from Google or some other sites, but not all, but definitely not mine (.Net). What am I missing here? Please help.</p>