Получить предлагаемое имя файла из org.apache.http.HttpResponse - PullRequest
6 голосов
/ 18 марта 2012

В Android вы можете скачать файл, используя org.apache.http классы HttpClient, HttpGet и HttpResponse. Как я могу прочитать предложенное имя файла из HTTP-запроса?

например. В PHP вы бы сделали это:

header('Content-Disposition: attachment; filename=blah.txt');

Как получить «blah.txt» с использованием классов Apache в Android / Java?

Ответы [ 2 ]

7 голосов
/ 19 марта 2012
BasicHeader header = new BasicHeader("Content-Disposition", "attachment; filename=blah.txt");
HeaderElement[] helelms = header.getElements();
if (helelms.length > 0) {
    HeaderElement helem = helelms[0];
    if (helem.getName().equalsIgnoreCase("attachment")) {
        NameValuePair nmv = helem.getParameterByName("filename");
        if (nmv != null) {
            System.out.println(nmv.getValue());
        }
    }
}

sysout> blah.txt

3 голосов
/ 26 июля 2013
HttpResponse response = null;
try {
    response = httpclient.execute(httppost);
} catch (ClientProtocolException e) {
} catch (IOException e) {
}

//observe all headers by this
Header[] h = response.getAllHeaders();
for (int i = 0; i < h.length; i++) {
    System.out.println(h[i].getName() + "  " + h[i].getValue());
}

//choose one header by giving it's name
Header header = response.getFirstHeader("Content-Disposition");
String s = header.getValue()
...