Get text from web page to string

前端 未结 3 1186
感情败类
感情败类 2020-11-27 05:46

I\'m new to Android and I want to get the whole text from a web page to a string. I found a lot of questions like this but as I said I\'m new to Android and I don\'t know ho

相关标签:
3条回答
  • 2020-11-27 06:13

    This is the code I generally use to download a string from the internet

    class RequestTask extends AsyncTask<String, String, String>{
    
    @Override
    // username, password, message, mobile
    protected String doInBackground(String... url) {
        // constants
        int timeoutSocket = 5000;
        int timeoutConnection = 5000;
    
        HttpParams httpParameters = new BasicHttpParams();
        HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
        HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
        HttpClient client = new DefaultHttpClient(httpParameters);
    
        HttpGet httpget = new HttpGet(url[0]);
    
        try {
            HttpResponse getResponse = client.execute(httpget);
            final int statusCode = getResponse.getStatusLine().getStatusCode();
    
            if(statusCode != HttpStatus.SC_OK) {
                Log.w("MyApp", "Download Error: " + statusCode + "| for URL: " + url);
                return null;
            }
    
            String line = "";
            StringBuilder total = new StringBuilder();
    
            HttpEntity getResponseEntity = getResponse.getEntity();
    
            BufferedReader reader = new BufferedReader(new InputStreamReader(getResponseEntity.getContent()));  
    
            while((line = reader.readLine()) != null) {
                total.append(line);
            }
    
            line = total.toString();
            return line;
        } catch (Exception e) {
            Log.w("MyApp", "Download Exception : " + e.toString());
        }
        return null;
    }
    
    @Override
    protected void onPostExecute(String result) {
        // do something with result
    }
    }
    

    And you can run the task with

    new RequestTask().execute("http://www.your-get-url.com/");

    0 讨论(0)
  • 2020-11-27 06:19

    Seeing as you aren't interested in Viewing the content at all, try using the following:

    In order to get your source code from an URL you can use this :

    HttpClient httpclient = new DefaultHttpClient(); // Create HTTP Client
    HttpGet httpget = new HttpGet("http://yoururl.com"); // 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) // Read line by line
        sb.append(line + "\n");
    
    String resString = sb.toString(); // Result is here
    
    is.close(); // Close the stream
    

    Make sure you run this off the main UI thread in an AsyncTask or in a Thread.

    0 讨论(0)
  • 2020-11-27 06:25

    Use This:

    public class ReadWebpageAsyncTask extends Activity {
        private TextView textView;
    
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            textView = (TextView) findViewById(R.id.TextView01);
        }
    
        private class DownloadWebPageTask extends AsyncTask<String, Void, String> {
            @Override
            protected String doInBackground(String... urls) {
                String response = "";
                for (String url : urls) {
                    DefaultHttpClient client = new DefaultHttpClient();
                    HttpGet httpGet = new HttpGet(url);
                    try {
                        HttpResponse execute = client.execute(httpGet);
                        InputStream content = execute.getEntity().getContent();
    
                        BufferedReader buffer = new BufferedReader(
                                new InputStreamReader(content));
                        String s = "";
                        while ((s = buffer.readLine()) != null) {
                            response += s;
                        }
    
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
                return response;
            }
    
            @Override
            protected void onPostExecute(String result) {
                textView.setText(Html.fromHtml(result));
            }
        }
    
        public void readWebpage(View view) {
            DownloadWebPageTask task = new DownloadWebPageTask();
            task.execute(new String[] { "http://www.google.com" });
    
        }
    }
    

    main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
    
        <Button android:layout_height="wrap_content" android:layout_width="match_parent" android:id="@+id/readWebpage" android:onClick="readWebpage" android:text="Load Webpage"></Button>
        <TextView android:id="@+id/TextView01" android:layout_width="match_parent" android:layout_height="match_parent" android:text="Example Text"></TextView>
    </LinearLayout>
    
    0 讨论(0)
提交回复
热议问题