Android – 从url下载JSON文件

是否可以从URL下载包含JSON数据的文件? 此外,我需要获取的文件没有文件扩展名,这是一个问题还是我可以强制它下载时具有.txt扩展名?

更新:我忘了提到,网站需要输入用户名和密码才能访问我所知道的网站。 有没有办法在检索文件时输入这些值?

你尝试过使用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)); 

当然。 像其他人所指出的那样,基本的URL是一个很好的起点。

虽然其他代码示例有效,但JSON内容的实际访问可以是一行的。 使用Jackson JSON库,您可以:

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

如果你想将JSON数据绑定到你已经定义的’Response’中:要获得Map,你会改为:

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

至于添加用户信息; 这些通常使用Basic Auth传递,其中您将base64编码的用户信息作为“Authorization”标头传递。 为此,您需要从URL打开HttpURLConnection,并添加标题; 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(); 

这是一个类文件和我编写的用于从URL下载JSON数据的接口。 至于用户名密码validation,这取决于它在您访问的网站上的实现方式。