Android - 从url下载JSON文件

时间:2011-02-17 09:58:44

标签: java android json file url

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

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

4 个答案:

答案 0 :(得分:4)

您是否尝试过使用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 :(得分:1)

基本上你会做类似的事情:

代码:

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();

答案 2 :(得分:1)

不确定。像其他人所指出的那样,基本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访问部分仍然相同。

答案 3 :(得分:0)

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