第一行代碼 第三版 第11章 網絡技術 11.1~11.2OkHttp

11.1 WebView的用法

用於在應用程序中展示一些網頁,藉助WebView控件,我們可以在自己的應用程序中嵌入一個瀏覽器。

    <WebView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/webView"/>
 	override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        webView.settings.setJavaScriptEnabled(true)
        webView.webViewClient = WebViewClient()
        webView.loadUrl("https://www.baidu.com")
    }

通過webView的getSrttings()方法可以設置一些瀏覽器的屬性;
此處調用setJavaScriptEnabled()方法,讓WebView支持JavaScript腳本。

隨後調用WebView的setWebViewClient()方法 ,傳入了一個WebViewClient的實例 ;用途 : 當需要從一個網頁跳轉到另一個網頁時,我們希望目標網頁仍然在當前的WebView中顯示,而不打開系統瀏覽器。

最後調用了loadUrl()方法,傳入網址即可展示相應的網頁內容。

需要申請網絡權限

11.2 使用Http訪問網絡

11.2.1 使用HttpURLConnection

首先需要獲取HttpURLConnection的實例,創建一個URL對象,傳入目標的網絡地址,然後調用openConnection()方法。

		var connection : HttpURLConnection?=null
		val url=URL("https://www.baidu.com") //創建URL對象
        connection= url.openConnection() as HttpURLConnection 
        connection.requestMethod="GET"	//設置HTTP請求所使用的方法  GET 和 POST
        onnection.connectTimeout=8000	//設置連接超時
        connection.readTimeout = 8000   //設置讀取超時

11.2.2 使用OkHttp

使用開源庫OkHttp網絡通信庫:(OkHttp的項目主頁地址:https://github.com/square/okhttp)
使用之前需要添加OkHttp庫的依賴;在app/build.gradle文件中的dependencies閉包中添加。
在這裏插入圖片描述

Okhttp的用法

  • 首先需要創建一個OkHttpClient的實例
    val client =OkHttpClient()
  • 發起一條HTTP請求,需要創建一個Request對象:可以通過url()方法來設置目標的網絡地址。
val request = Request.Builder()
            .url("https://www.baidu.com")
            .build()
  • 調用OkHttpClient 的 newCall() 方法來創建一個Call 對象,並調用它的execute() 方法 來發送請求並獲取服務器返回的數據。
    val resopnse = client.newCall(request).execute()

  • Resonse 對象就是服務器返回的數據,可以用如下寫法來得到返回的具體內容:
    val responseData = response.body?.string()

  • 如果發送POST請求,我們需要先構建一個Request Body 對象來存放待提交的參數 :

		//發送一條 post請求 先構建RequestBody 對象存放待提交的參數
         val requestBody = FormBody.Builder()
            .add("username","admin")
            .add("password","123456")
            .build()
        //然後在Request.Builder 中調用post() 方法 並將RequestBody對象傳入
        val request = Request.Builder()
            .url("https://www.biadu.com")
            .build()

完整的GET實現:

				val client = OkHttpClient()
	            val request = Request.Builder()
                    .url("https://www.baidu.com")
                    .build()
                val response = client.newCall(request).execute()
                val responseData = response.body?.string()
                showResponse(responseData.toString())
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章