Downloading a website to a string

蓝咒 提交于 2019-12-29 07:43:08

问题


Having done some basic tutorials, I started making my first real android app in eclipse. I want this app to check if the text in an EditText matches the text on a website (this one: http://www.augustinianum.eu/roosterwijzigingen/14062012.pdf (it contains my school's schedule changes)). I've found out how to make the app check if the text in the EditText matches a string (with the method contains()), so now the only thing I need to do is to download all of the text of that website to a string. But I have no idea how to. Or is there maybe a method which I can check with if a website contains a certain word without downloading the website's text to a string.

Thank You!

(BTW I'm not English so plz forgive me if I've made some language-related mistakes.)

@androider I can't post my code in the comment box so here it is:

package me.moop.mytwitter;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.app.Activity;
import android.app.ProgressDialog;

public class MainActivity extends Activity {

Button mBtnCheck;
EditText mEtxtGroup;
ProgressDialog mProgressDialog;
TwitterUser mTwitterUser;
TextView mTxtv1;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.nicelayout3);

    mBtnCheck = (Button) findViewById(R.id.btnCheck);
    mEtxtGroup = (EditText) findViewById(R.id.etxtGroup);
    mTxtv1 = (TextView) findViewById(R.id.textView1);

}

  public void checkScheduleChange(View view){
    if (view == mBtnCheck){
        String group;
        group = mEtxtGroup.getText().toString();
        if (group.length() > 0){
            mProgressDialog = new ProgressDialog(this);
            mProgressDialog.setMessage("Bezig met checken voor roosterwijzigingen...");
            mProgressDialog.show();
            try 
            {
                URL url = new URL("http://www.augustinianum.eu/roosterwijzigingen/14062012.pdf");
                BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
                String str;
                while ((str = in.readLine()) != null){
                    mProgressDialog.dismiss();
                   if(str.contains(mEtxtGroup.getText().toString())){
                       Toast.makeText(this, "U hebt een roosterwijziging.", Toast.LENGTH_LONG).show();
                   }
                   else{
                       Toast.makeText(this, "U hebt geen roosterwijzigingen", Toast.LENGTH_LONG).show();
                   }
                }
                in.close();
            } catch (MalformedURLException e) {
                Toast.makeText(this, "Er is een fout opgetreden, probeer opniew.", Toast.LENGTH_LONG).show();
            } catch (IOException e) {
                Toast.makeText(this, "Er is een fout opgetreden, probeer opniew.", Toast.LENGTH_LONG).show();
            }
        }
        else{
            Toast.makeText(this, "Voer een klas in", Toast.LENGTH_LONG).show();
        }
    }
  }
}         

Here are the button's properties:

 <Button
        android:id="@+id/btnCheck"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:clickable="true"
        android:onClick="checkScheduleChange"
        android:text="Check" >

回答1:


You can get the text using InputStream Reader like this.

try 
{
    URL url = new URL("http://yourwebpage.com");
    // Read all the text returned by the server
    BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
    String str;
    while ((str = in.readLine()) != null) 
    {
     // str is one line of text; readLine() strips the newline character(s)
     // You can use the contain method here.
       if(str.contains(editText.getText().toString))
        {
          You can perform your logic here!!!!!         
        }
    }
    in.close();
} catch (MalformedURLException e) {
} catch (IOException e) {
}

Also add an additional permission in your apps Manifest file:

<uses-permission android:name="android.permission.INTERNET/>   

//============================EDIT================================//

if (group.length() > 0)
  {
            mProgressDialog = new ProgressDialog(this);
            mProgressDialog.setMessage("Bezig met checken voor roosterwijzigingen...");
            mProgressDialog.show();
            try 
            {
                URL url = new URL("http://www.augustinianum.eu/roosterwijzigingen/14062012.pdf");
                BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
                String str;
                while ((str = in.readLine()) != null){

                   if(str.contains(mEtxtGroup.getText().toString())){

                     if(mProgressDialog.isShowing())
                     { 
                        mProgressDialog.dismiss(); 
                     }


                     Toast.makeText(this, "U hebt een roosterwijziging.", Toast.LENGTH_LONG).show();
                     break;
                   }
                }
                in.close();
            } catch (MalformedURLException e) {
                Toast.makeText(this, "Er is een fout opgetreden, probeer opniew.", Toast.LENGTH_LONG).show();
            } catch (IOException e) {
                Toast.makeText(this, "Er is een fout opgetreden, probeer opniew.", Toast.LENGTH_LONG).show();
            }

                     if(mProgressDialog.isShowing())
                     { 
                        mProgressDialog.dismiss(); 
                     }
        }
        else{
            Toast.makeText(this, "Voer een klas in", Toast.LENGTH_LONG).show();
        }



回答2:


This is a good related Java question: How do you Programmatically Download a Webpage in Java

You can then implement whatever method you choose into your app. One thing to note is that you will need to enable the INTERNET permission on your app in order to access the internet.



来源:https://stackoverflow.com/questions/11590899/downloading-a-website-to-a-string

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!