簡體   English   中英

使用InputStream從網頁獲取數據?

[英]Getting Data from a WebPage using InputStream?

我已經閱讀了許多說明,並做了非常努力的嘗試,但是仍然無法使我的InputStream正常工作。 所以我轉向你。 預先感謝您的幫助!

我的目標是從空白的HTML網頁獲取數據,並將其顯示在我的android應用中的TextView上。 我已在清單中包含所有Internet權限,並且我的XML文件只是線性布局中的textview。 該應用程序只有一個稱為“ scorereader”的類,僅此而已。 當我運行它時,它只顯示帶有textview的空白XML。 它不顯示來自HttpClient的文本。

JAVA:scorereader.java

public class scorereader extends Activity {

    public void onCreate(Bundle savedInstanceState) {
    try
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mainactivity); 

        TextView tv = (TextView)findViewById(R.id.resultbox);
        try{
            HttpClient httpclient = new DefaultHttpClient(); 
            HttpPost httppost = new HttpPost("http://greentapcore.tumblr.com/");
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            InputStream webs = entity.getContent();
            try{

                BufferedReader reader = new BufferedReader(new InputStreamReader(webs,"iso-8859-1"),8);
                tv.setText(reader.readLine()); 
                webs.close();

            }catch(Exception e){
                Log.e("log_tag", "Error converting result "+e.toString()); 
            }
        }catch(Exception e){
            Log.e("log_tag", "Error in HTTP connection "+e.toString());

        }

    }
    catch (Exception e)
    { 
        Log.e("ERROR", "ERROR IN CODE: " + e.toString()); 
        e.printStackTrace();

    }

} 

}

來自Tumblr網站的HTML:-完全空白的頁面,頂部帶有“ hi”。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>scoretrack</title>
    <link rel="stylesheet" href="style.css">
    <script src="script.js"></script>
  </head>
  <body>
    hi
  </body>
</html>

提前非常感謝您! 高度贊賞。

使用HttpGet而不是HttpPost HttpGet將執行GET請求而不是POST請求,后者應正確下載網頁。

注意日志中的消息

Error in HTTP connection android.os.NetworkOnMainThreadException

在另一個線程中跟隨對服務器的請求

private TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mainactivity);
        tv = (TextView)findViewById(R.id.resultbox);
        new Task().execute();

    }

    class Task extends AsyncTask<Void, Void, String>{
        @Override
        protected String doInBackground(Void... params) {
            try{
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost("http://greentapcore.tumblr.com/");
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                InputStream webs = entity.getContent();
                try{
                    StringBuilder result = new StringBuilder();
                    BufferedReader reader = new BufferedReader(new InputStreamReader(webs,"iso-8859-1"),8);
                    String line;
                    while( (line = reader.readLine()) != null) {
                        result.append(line);
                    }
                    webs.close();
                    return result.toString();

                }catch(Exception e){
                    Log.e("log_tag", "Error converting result "+e.toString());
                }
            }catch(Exception e){
                Log.e("log_tag", "Error in HTTP connection "+e.toString());

            }
            return null;
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            if(s != null){
                tv.setText(s);
            }
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM