1. 程式人生 > >Android檢視網頁原始碼

Android檢視網頁原始碼

1 佈局

<ScrollView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content" >
      <TextView
          android:id="@+id/result"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"             
        />
</ScrollView>



在ScrollView控制元件裡嵌入一個TextView即可,其帶有一個滾動條.

2利用網頁的路徑和編碼方式,得到網頁的位元組陣列

public class GetPageResource {
      public static String getHtml(String path,String encoding) throws Exception{
    	  HttpURLConnection connection=(HttpURLConnection) new URL(path).openConnection();
    	  connection.setConnectTimeout(5000);
    	  connection.setRequestMethod("POST");
    	 if(connection.getResponseCode()==200){
    		 InputStream inputStream=connection.getInputStream();
    		 byte [] imageData=GetResource.readResource(inputStream);
    		 return new String(imageData,encoding);
    	 }
    	 return null;
      }
}



分析:
(1)關於網頁的編碼方式,可以利用HttpWatch工具來獲取
(2)利用URL得到HttpURLConnection connection這樣便於資源建立起了聯絡,且設定connection的屬性值
(3)利用HttpURLConnection connection得到輸入流.即可以這麼想:此時的網頁已經儲存到了此輸入流inputStream裡
(4)將在輸入流裡的網頁資料輸出到位元組數組裡面.即byte [] imageData=GetResource.readResource(inputStream).如下
readResource(inputStream)方法如下:

public class GetResource {
    public static byte[] readResource(InputStream inputStream) throws Exception{
    	ByteArrayOutputStream outputStream=new ByteArrayOutputStream();
    	byte [] array=new byte[1024];
    	int len=0;
    	while( (len=inputStream.read(array))!=-1){
    		   outputStream.write(array,0,len);
    	}
    	inputStream.close();
    	outputStream.close();
    	
    	return outputStream.toByteArray();
    }



分析:
(1)沒有方法可以把輸入流裡的資料直接放到位元組數組裡(查閱API即知),而是要利用ByteArrayOutputStream outputStream
   把在輸入流自己把自己的資料讀(read())到一個位元組數組裡面,即inputStream.read(buffer),然後數組裡面的資料放入
   輸出流ByteArrayOutputStream outputStream裡面,即outputStream.write(buffer,0,len);
(2)待資料全部轉移到輸入流outputStream裡面,此時就可以把輸出流的資料全部轉換為位元組陣列,即outputStream.toByteArray();
(3)在此例子就很好體現了輸入流和輸出流的使用.

在輸入流相應的API中都是把輸入流讀取到一個數組中,或者只讀取一個位元組,或者讀取一行
如FileInputStream類中的方法:
public int read(byte[] b,int off,int len)從此輸入流中將最多 len 個位元組的資料讀入一個位元組陣列中
public int read()從此輸入流中讀取一個數據位元組
如在BufferedReader類中的方法:
public String readLine() 讀取一個文字行.返回值:包含該行內容的字串

在輸出流相應的API中都把是位元組陣列寫入此輸出流,或者只把陣列中的某個位置的資料寫入輸出流
如ByteArrayOutputStream類的方法中:
public void write(byte[] b,int off,int len)將指定位元組陣列中從偏移量off開始的len個位元組寫入此位元組陣列輸出流
public void write(int b)將指定的位元組寫入此位元組陣列輸出流
然後我們可以發現:
(1)可以把輸出流裡的資料轉換為位元組陣列
如ByteArrayOutputStream類的方法中:
public byte[] toByteArray():建立一個新分配的位元組陣列。其大小是此輸出流的當前大小,並且緩衝區的有效內容已複製到該陣列中。
(2)可以把輸出流裡的資料轉換為字串
如ByteArrayOutputStream類的方法中:
public String toString():將緩衝區的內容轉換為字串,根據平臺的預設字元編碼將位元組轉換成字元。

相關推薦

Android檢視網頁原始碼

1 佈局 <ScrollView android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView

JS禁止檢視網頁原始碼的簡單實現

最常見檢視網站原始碼的無非有這四種: F12 滑鼠右鍵單擊 Ctrl+Shift+I Ctrl+U 我們可以通過使用JavaScript來遮蔽掉這三種狀態從而實現禁止檢視原始碼效果。下面直接放原始碼 <!DOCTYPE html> <html>

scala檢視本地檔案以及檢視網頁原始碼

import scala.io.Source                     //匯入Source包object proce {    def main(args: Array[String]) {     val file = Source.fromFile(

在 iPad和 iPhone的瀏覽器上檢視網頁原始碼

   今天使用iPad 處理OA上的問題,有個視窗不能正常工作,想檢視一下原始碼,發現iPad中的 Safari和chrome 沒有內建檢視原始碼功能。查了幾個資料,遇到的又是沒抄全的,下面是safari的設定方法: 在 iPad、iPhone 或 iPod touch 的

Mac OS使用技巧十九:Safari碉堡功能之二檢視網頁原始碼

     因為大三下的時候選修了搜尋技術,瞭解了網路上搜索引擎和網路爬蟲的資訊扒取的一些東西,後來我們做了一個比較水的東西,就是隻扒取了幾家較大的下載網站幾十個軟體的評分下載量等資訊,當用戶輸入一

Android檢視api原始碼

當我們閱讀Android API開發文件時候,上面的每個類,以及類的各個方法都是已經寫好的方法和控制元件,可是我們只是在搬來使用,不知道它的原理,它是如何被實現的。android系統是開源的,所以谷歌官方在每釋出一個版本的時候都會放出它對應的API原始碼的,讓我們可以深入瞭

方法彙總 禁止檢視網頁原始碼全攻略

<Html> <head> <title>歡迎光臨網頁教學網</TITLE> </HEAD> <FRAMESET COLS="1,*" frameborder=0 framespacing=0> <FRAME SRC="PS.HTM

通過開原始碼檢視網頁原始碼

1、首先實現介面的佈局 效果如下 程式碼佈局程式碼如下<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas

解決檢視網頁原始碼html程式碼樣式亂了

今天遇到一個問題,程式碼在phpstorm中是正確樣式,但是到了網頁上檢視原始碼樣式就亂了,如下圖 瀏覽中檢視原始碼如下: 解決辦法:     用PHPStrom編輯器選擇“file”->“Line separators”->"CRLF-Wind

檢視網頁原始碼--VB

    需要得控制元件:Text,Button,Inet,RichTextBox     Inet控制元件位於Microsoft Internet Transfer Controls      RichTextBox控制元件位於    Microsoft Rich Text

Android核心技術-day04-02-網頁原始碼檢視器(StreamUtils)

package com.gaozewen.htmlviewer.utils; import java.io.ByteArrayOutputStream; import java.io.InputStream; /** * 流的工具類 * @author gzw * @version $R

關於通過網頁檢視JS原始碼中漢字顯示亂碼的解決方法

開頭貼出原文地址 在網頁中讀取js檔案,中文顯示正常(比如alert出js檔案的中文資訊)。但當瀏覽器檢視js檔案原始碼時,則會看到程式碼裡的中文全是亂碼。雖然不影響程式執行,但是在讀js檔案程式碼時,會受影響。 前幾天在瀏覽器檢視自己寫的web程式碼的時候,發現外聯js檔案的漢字註釋顯

解決 Android 26 無法檢視系統原始碼的問題

隨著 Android 8.0 的正式釋出,相信有些朋友已經升級 SDK 開始使用新特性了。然而需要注意的是,這一次 Google 並沒有及時釋出與之對應的 Android-26 原始碼。這帶來的問題是,當你按下 command 同時單擊某個系統 API 想瀏覽原始碼文件時,會

檢視Android的API原始碼方法

推薦一個去除Android的API原始碼中hide隱藏的API地址,可以直接下載替換Android Studio中platform下android.jar檔案 地址: https://github.com/anggrayudi/android-hidden-api  用法: 1.下載對

網頁原始碼檢視

網頁原始碼檢視器 程式碼實現步驟  [1]搭建UI  [2]httpurlconnection類基本用法 @OnClick(R.id.btn) public void onViewClicked() {

檢視微信瀏覽器的網頁原始碼

第一步下載安裝:http://www.telerik.com/fiddler  第二步:   開啟選項 訪問所有連線: 設定代理:allow remote computer to connect  埠為8888 ,一般瀏覽器會自動設定 &

android webview 真正實現---儲存整個網頁原始碼

webview部分:             webView = (WebView) findViewById(R.id.webview); WebSettings webSettings =

ANDROID自定義檢視——onLayout原始碼 流程 思路詳解

簡介: 在自定義view的時候,其實很簡單,只需要知道3步驟:    1.測量——onMeasure():決定View的大小    2.佈局——onLayout():決定View在ViewGroup中的位置    3.繪製—

如何在Mac上檢視網頁原始碼

在mac上想檢視頁面的原始碼,點選右鍵檢視 發現並沒有類似window上的右鍵的檢視原始碼的選項。是不能檢視麼?當然不是,這在預設情況下沒有開啟這樣的能力。 開啟步驟: 1.點選Safari ,選擇“偏好設定”。然後會有一個彈框,選擇最後一項“高階”,然後勾選 “在選單欄

檢視Android系統的原始碼 線上和離線方式 及閱讀工具

前言     不管是做Android底層(Framework-Linux-驅動)開發,還是做APP開發,對於Android的某一個功能,某一個機制,或者某一個API,它到底是如何實現的,需要 Re