Android - скачать файл JSON с URL - PullRequest
       0

Android - скачать файл JSON с URL

4 голосов
/ 17 февраля 2011

Можно ли загрузить файл с данными JSON внутри с URL-адреса?Кроме того, файлы, которые мне нужно получить, не имеют расширения, это проблема, или я могу заставить их иметь расширение .txt при загрузке?

ОБНОВЛЕНИЕ: Я забыл упомянуть, что веб-сайт требует ввода имени пользователя и пароля для доступа к сайту, который я знаю.Есть ли способ ввода этих значений при получении файла?

Ответы [ 4 ]

4 голосов
/ 17 февраля 2011

Вы пробовали использовать URLConnection?

private InputStream getStream(String url) {
    try {
        URL url = new URL(url);
        URLConnection urlConnection = url.openConnection();
        urlConnection.setConnectTimeout(1000);
        return urlConnection.getInputStream();
    } catch (Exception ex) {
        return null;
    }
}

Также не забудьте закодировать ваши параметры следующим образом:

String action="blabla";
InputStream myStream=getStream("http://www.myweb.com/action.php?action="+URLEncoder.encode(action));
1 голос
/ 17 февраля 2011

Конечно. Как уже отмечали другие, базовый URL является достаточно хорошей отправной точкой.

В то время как другие примеры кода работают, фактический доступ к содержимому JSON может быть однострочным. С Джексоном библиотекой JSON вы можете сделать:

Response resp = new ObjectMapper().readValue(new URL("http://dot.com/api/?customerId=1234").openStream(),Response.class);

если вы хотите связать данные JSON в «Response», который вы определили: чтобы получить карту, вместо этого вы должны сделать:

Map<String,Object> map = new ObjectMapper().readValue(new URL("http://dot.com/api/?customerId=1234").openStream(), Map.class);

относительно добавления информации о пользователе; обычно они передаются с использованием Basic Auth , в котором пользовательская информация в кодировке base64 передается в виде заголовка «Авторизация». Для этого вам нужно открыть HttpURLConnection из URL и добавить заголовок; Часть доступа JSON остается прежней.

1 голос
/ 17 февраля 2011

В основном вы бы сделали что-то вроде:

Код:

URL address = URL.parse("http://yoururlhere.com/yourfile.txt"); 
URLConnection conn = new URLConnection(address);
InputStream is = conn.getInputStream(); 
BufferedInputStream bis = new BufferedInputStream(is);
ByteArrayBuffer bab = new ByteArrayBuffer(64); 
int current = 0;

while((current = bis.read()) != -1) {
  bab.append((byte)current); 
}

FileOutputStream fos = new FileOutputStream(new File(filepath));
fos.write(bab.toByteArray());
fos.close();
0 голосов
/ 27 февраля 2013

Здесь - это файл класса и интерфейс, который я написал для загрузки данных JSON с URL-адреса. Что касается аутентификации по имени пользователя, это будет зависеть от того, как она реализована на веб-сайте, к которому вы обращаетесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...