是否可以從URL中下載帶有JSON數據的文件?此外,我需要得到的文件沒有文件擴展名,這是一個問題,或者我可以強迫它下載一個.txt擴展名?Android - 從網址下載JSON文件
更新: 我忘了提及,該網站需要輸入用戶名和密碼才能訪問我知道的網站。有一種方法可以在檢索文件時輸入這些值嗎?
是否可以從URL中下載帶有JSON數據的文件?此外,我需要得到的文件沒有文件擴展名,這是一個問題,或者我可以強迫它下載一個.txt擴展名?Android - 從網址下載JSON文件
更新: 我忘了提及,該網站需要輸入用戶名和密碼才能訪問我知道的網站。有一種方法可以在檢索文件時輸入這些值嗎?
基本上,你會做這樣的事情:
代碼:
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();
這將失敗,因爲您無法實例化URLConnection。 – FractalBob 2016-03-17 17:18:03
您是否嘗試過使用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;
}
}
還記得編碼您PARAMS這樣的:
String action="blabla";
InputStream myStream=getStream("http://www.myweb.com/action.php?action="+URLEncoder.encode(action));
別忘了關閉輸入流:) – 2015-11-04 13:30:25
肯定。像其他人指出的那樣,基本URL是一個很好的起點。
雖然其他代碼示例的工作原理,但實際訪問JSON內容可能是單線程的。隨着Jackson JSON庫,你可以這樣做:
Response resp = new ObjectMapper().readValue(new URL("http://dot.com/api/?customerId=1234").openStream(),Response.class);
,如果你想JSON數據綁定到您所定義的「迴應」:得到一個地圖,你反而會做:
Map<String,Object> map = new ObjectMapper().readValue(new URL("http://dot.com/api/?customerId=1234").openStream(), Map.class);
爲添加用戶信息;這些通常使用Basic Auth傳遞,其中您將base64編碼的用戶信息作爲「授權」標頭傳遞。 爲此,您需要從URL打開HttpURLConnection,然後添加標題; JSON訪問部分仍然相同。
Here是一個類文件和一個接口,我寫了一個從URL下載JSON數據的接口。至於用戶名密碼認證,這將取決於您在訪問的網站上如何實施。
嗨,試試[這](http://stackoverflow.com/questions/576513/android-download-binary-file-problems)。 – Pasha 2011-02-17 10:04:39