无法从网页获取内容

时间:2017-03-11 17:04:21

标签: android android-asynctask

我正在创建一个应用程序,其中需要"查看源代码"一个网页所以我首先制作了这个剧本:

public static String getResponseFromUrl(@NonNull String url) throws java.io.IOException {
    HttpClient httpclient = new DefaultHttpClient(); // Create HTTP Client
    HttpGet httpget = new HttpGet(URL); // Set the action you want to do
    HttpResponse response = httpclient.execute(httpget); // Executeit
    HttpEntity entity = response.getEntity();
    InputStream is = entity.getContent(); // Create an InputStream with the response
    BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
    StringBuilder sb = new StringBuilder();
    String line = null;
    while ((line = reader.readLine()) != null)
      sb.append(line);
    String resString = sb.toString();
    is.close();
    return  resString;
}

但我注意到HttpClient已被弃用。所以经过一些搜索后,我发现我必须在AsyncTask中使用HttpURLConnection,然后,我制作了一个脚本:

public class CodeTask extends AsyncTask<String, Integer, String> {

    @Override
    protected String doInBackground(String... urls) {
        try {
            HttpURLConnection urlConnection = null;
            String toRet = "";
            URL url = new URL(urls[0]);
            try {
                urlConnection = (HttpURLConnection) url.openConnection();

                if (urlConnection.getContent() != null) {
                    InputStreamReader in = new InputStreamReader((InputStream) urlConnection.getContent());
                    toRet = IOUtils.toString(in);
                    Debug(toRet);
                } else
                    Debug("urlConnection is null");
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (urlConnection != null)
                    urlConnection.disconnect();
            }
            return toRet;
        }catch (Exception ex){
            ex.printStackTrace();
        }
        return null;
    }
}

然后,我用:

创建一个实例
CodeTask codeTask = new CodeTask();

但是当我试图回复时:

String value = new Helper.CodeTask().execute("http://www.rtpv.es/aipv/group.php?code=" + codeInputText.getText());

但它返回一个AsyncTask。我该怎么办?

1 个答案:

答案 0 :(得分:0)

最后只添加.get(),它会返回String值。