Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

HttpURLConnection : Server return HTTP 403 Forbidden

I want to download a file with his url. I use an AsyncTask with HttpURLConnection but when I get response code, server return error 403. I use the HttpURLConnection in doInBackground.

Code :

@Override
protected String doInBackground(String... sUrl) {
    InputStream input = null;
    OutputStream output = null;
    HttpURLConnection connection = null;
    try {

        ext = FilenameUtils.getExtension(sUrl[0]);
        fileName = FilenameUtils.getBaseName(sUrl[0]);

        Log.i("Brieg", "storage : /storage/emulated/0/" + fileName + "." + ext);

        URL url = new URL(sUrl[0]);
        connection = (HttpURLConnection) url.openConnection();
        connection.connect();

        if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) {
            return "Server returned HTTP " + connection.getResponseCode() + " " + connection.getResponseMessage();
        }

        int fileLength = connection.getContentLength();

        input = connection.getInputStream();
        output = new FileOutputStream("/storage/emulated/0/" + fileName + "." + ext);

        byte data[] = new byte[4096];
        long total = 0;
        int count;
        while ((count = input.read(data)) != -1) {

            if (isCancelled()) {
                input.close();
                return null;
            }
            total += count;

            if (fileLength > 0)
                publishProgress((int) (total * 100 / fileLength));
            output.write(data, 0, count);
        }
    }
    catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    finally {
        try {
            if (output != null)
                output.close();
            if (input != null)
                input.close();
        }
        catch (IOException ignored) {
        }

        if (connection != null)
            connection.disconnect();
    }
    return null;

}

Where is the problem ?

Knowing that when I get URL in a browser, the download file starts up.

Thank you in advance.

like image 913
BSK-Team Avatar asked Feb 28 '26 10:02

BSK-Team


1 Answers

The cause should be you are not setting User-Agent:

connection = (HttpURLConnection) url.openConnection();   
connection.addRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:221.0) Gecko/20100101 Firefox/31.0"); // add this line to your code
connection.connect();
like image 127
jpereira Avatar answered Mar 03 '26 00:03

jpereira