2014-11-04 52 views
0

我有一個Android應用程序並使用AsyncTask我想從網站下載JSON文件。從網站使用AsyncTask下載JSON字符串

到目前爲止,我有

public class DownloaderTask extends AsyncTask<String, Void, String[]> { 

private MyActivity myactivity; 
private Context context; 
private String rawFeed[] = new String[3]; 

DownloaderTask(MyActivity parent) { 

    myactivity = parent; 
    context = parent.getApplicationContext(); 
} 

@Override 
protected String[] doInBackground(String... params) { 

    boolean complete = false; 
    InputStream input = null; 
    OutputStream output = null; 
    HttpURLConnection connection = null; 

    for (int i = 0; i < params.length; i++) { 

     try { 
      URL url = new URL(params[i]); 
      connection = (HttpURLConnection) url.openConnection(); 
      connection.connect(); 

      input = connection.getInputStream(); 
     } 
     catch (Exception e) { 

     } 
    } 

    return rawFeed; 
} 

@Override 
protected void onPreExecute() { 
    super.onPreExecute(); 
} 

@Override 
protected void onPostExecute(String[] strings) { 

    if (myactivity != null) { 

     myactivity.setRefreshed(strings); 
    } 
} 

林不知道如何從這裏

網站,我從網上下載繼續是:https://d396qusza40orc.cloudfront.net/android%2FLabs%2FUserNotifications%2Ftaylorswift.txt

,當你去的網站,它只是一個包含一堆文本的頁面,一個JSON文件。

是那些獲得傳入的AsyncTask的參數是3個字符串數組,包含我需要從

+0

AsyncTasks有問題,主要圍繞App的生命週期。你有沒有嘗試過使用圖書館排球?你甚至可以使用GSON(如果你需要去串行化)在一個分類的Volley類中。看到這個帖子http://stackoverflow.com/questions/24537875/making-a-gson-request-using-volley – 2014-11-04 16:26:32

+0

我想使用AsyncTask熟悉它的功能。什麼樣的問題?它們太糟糕了,人們通常不會使用它? @GrahamSmith – masterCoder 2014-11-04 16:31:48

回答

1

下載讀書,我使用的輸入流中的所有內容的URL每個字符串:

String inputStreamToString(InputStream is) 
{ 
    BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
    StringBuilder stringBuilder = new StringBuilder(); 
    String line = null; 
    try 
    { 
     while ((line = reader.readLine()) != null) 
     { 
      stringBuilder.append(line); 
     } 
     is.close(); 
    } 
    catch (IOException e) 
    { } 
    return stringBuilder.toString(); 
} 

然後,將其解析爲JSON,您可以使用該字符串構造它的Java JSONObject。

+0

這樣得到一個InputStream,下面的代碼會讀取內容? – masterCoder 2014-11-04 16:35:51

+0

如果內容是文本,是的(不知道這個方法如果試圖讀取其他的東西是什麼,preobably它會工作,併產生一個無意義的字符串) – JML 2014-11-04 16:39:08

+0

如果它在for循環?你會在哪裏放置is.close()? – masterCoder 2014-11-04 16:41:36