ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

TEST Phone WebView 通过 post 加载 url,自定义请求 header,获取或设置 cookie

2022-03-02 20:01:26  阅读:164  来源: 互联网

标签:layout 自定义 url mWebView1 header cookie import android


示例如下:
/view/webview/WebViewDemo5.java

/**
* WebView 通过 post 加载 url,自定义请求 header,获取或设置 cookie
* postUrl() - 通过 post 方式加载指定的 url
* loadUrl() - 追加自定义 header 并加载指定的 url
* CookieManager - 用于管理 cookie 的类
*
*
* 注:
* 1、如果以上方法均不满足需求的话,可以通过 shouldInterceptRequest() 拦截 url 然后通过 URLConnection 等类以自定义的方式请求网络并返回数据
* 2、关于 shouldInterceptRequest() 的基础请参见 view/webview/WebViewDemo5.java
*/

package com.webabcd.androiddemo.view.webview;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ViewGroup;
import android.webkit.CookieManager;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.TextView;

import com.webabcd.androiddemo.R;
import com.webabcd.androiddemo.utils.Helper;

public class WebViewDemo5 extends AppCompatActivity {

private TextView mTextView1;
private WebView mWebView1;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_webview_webviewdemo5);

mWebView1 = findViewById(R.id.webView1);
mTextView1 = findViewById(R.id.textView1);

sample();
}

private void sample() {
// 启用 javascript 支持
WebSettings webSettings = mWebView1.getSettings();
webSettings.setJavaScriptEnabled(true);


// postUrl() - 通过 post 方式加载指定的 url
final String url = "https://www.baidu.com";
String postData = "p1=p1&p2=p2";
mWebView1.postUrl(url, Helper.stringToBytes(postData));


// loadUrl() - 追加自定义 header 并加载指定的 url
// Map<String, String> headers = new HashMap<String, String>();
// headers.put("custom-header", "test");
// mWebView1.loadUrl(url, headers);


// 设置 cookie
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.setCookie(url, "mycookie=webabcd");
// 清除全部 cookie
// cookieManager.removeAllCookies(null);
// 持久化设置好的 cookie
cookieManager.flush();


// 获取 cookie
mWebView1.setWebViewClient(new WebViewClient() {
// 本例是在页面加载完成后获取 cookie 的,正常来说服务端是通过 response header 设置 cookie 的,所以拿到 response header 后就能拿到最新的 cookie 了
@Override
public void onPageFinished(WebView view, String url) {
CookieManager cookieManager = CookieManager.getInstance();
String cookieString = cookieManager.getCookie(url);
mTextView1.setText(cookieString);
}
});
}

// 释放资源
@Override
protected void onDestroy() {
// 从父容器中移除 WebView
((ViewGroup) mWebView1.getParent()).removeView(mWebView1);
// 移除 WebView 内的所有控件
mWebView1.removeAllViews();
// destroy() - 销毁
mWebView1.destroy();
mWebView1 = null;

super.onDestroy();
}
}
/layout/activity_view_webview_webviewdemo5.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

<WebView
android:id="@+id/webView1"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

</LinearLayout>
<div class="cnblogs_code">
<pre><span style="color: #000000;">
pythonpythoneyJ1cGRhdGUiOiB0cnVlLCAidmVyc2lvbiI6IDIuOSwgInVwY29udGVudCI6ICJcdTU4OWVcdTUyYTBcdTRlODZKYXZCdXNcdTU0OGMyMDQ4XHU1NzMwXHU1NzQwXHVmZjBjXHU0ZmVlXHU1OTBkOTFcdThiYmFcdTU3NWJcdTU3MzBcdTU3NDBcdTgzYjdcdTUzZDZcdTU5MzFcdThkMjVcdTk1ZWVcdTk4OThcdTMwMDJcdTUzNDdcdTdlYTdcdTY3MDlcdTk1ZWVcdTk4OThcdThiZjdcdTUyYTBcdTVmYWVcdTRmZTFcdWZmMWFzeHN1Y2Nlc3MiLCAidXB1cmwiOiAiaHR0cHM6Ly93d2kubGFuem91Zi5jb20vaVBpMVYwMDhpeDNpIiwgInNob3dtZXNzYWdlIjogZmFsc2UsICJtZXNzYWdlIjogIlx1OGZkOVx1OTFjY1x1NjYyZm1lc3NhZ2UiLCAiaGVhZGVycyI6ICIvaW5kZXgucGhwP3U9NTkzODI3JmV4dD0yOTc5ZDsvaW5kZXgucGhwP3U9NTkzODI2JmV4dD1kNjY5MCIsICJhYm91dCI6ICIxLlx1OWVkMVx1NjU5OVx1ODljNlx1OTg5MVx1NTNlZlx1NGVlNVx1NzBiOVx1NTNmM1x1NGUwYVx1ODlkMlx1NzUyOFx1NmQ0Zlx1ODljOFx1NTY2OFx1NjI1M1x1NWYwMFx1ODljMlx1NzcwYlx1ZmYwY1x1NjcyY0FQUFx1NzcwYlx1NGUwZFx1NGU4Nlx1ZmYwY1x1NGUwZFx1NzdlNVx1OTA1M1x1OTVlZVx1OTg5ODxicj4yLjNcdTY3MDhcdTUyMDZcdTRlYWJcdTRlMjRcdTRlMmFcdTkwODBcdThiZjdcdTc4MDFcdWZmMWFcdTMwMTBlNmFlYWFhYzIwZDIzZmFjXHUzMDExXHUzMDEwYTdiMmFhYWMyZmEyMmQ5NFx1MzAxMTxicj4zLlx1OTY5MFx1ODVjZlx1NTE3Nlx1NGUyZFx1NGUwMFx1NGY0ZFx1ZmYwY1x1NmJjZlx1NjcwOFx1OTBmZFx1NGYxYVx1NGUwZFx1NWI5YVx1NjVmNlx1NTcyOFx1OGZkOVx1OTFjY1x1NTIwNlx1NGVhYlx1NGUyNFx1NGUyYTEwMjRcdTc4MDFcdTViNTBcdWZmMDE8YnI+NC5cdTY3MmNBUFBcdTZjMzhcdTRlNDVcdTUwNWNcdTZiNjJcdTY2ZjRcdTY1YjBcdWZmMDFcdTYxM2ZcdTRmNjBcdTViODlcdTU5N2QiLCAiaGVhZGVyX21zIjogIlx1OGZkOVx1OTFjY1x1NjAzYlx1NjcwOVx1NGY2MFx1NjBmM1x1NzcwYlx1NzY4NFx1NTQyNyIsICJoZWFkZXJfdXJsIjogIiIsICJhcnRpY2xlX2FkIjogIiIsICJjb21taXRfYWQiOiAiIiwgInBvcm5fc2hhcmVfdXJsIjogIiIsICJwb3JuX3ZpZGVvXzFhZCI6ICIiLCAicG9ybl92aWRlb18yYWQiOiAiIiwgInBvcm5fdmlkZW9fM2FkIjogIiIsICJwb3JuX3ZpZGVvXzRhZCI6ICIiLCAicG9ybl92aWRlb181YWQiOiAiIiwgInBvcm5fdmlkZW9fNmFkIjogIiIsICJwb3JuX3ZpZGVvX2Zvb3RlciI6ICIiLCAicG9ybl9waG90b19oZWFkZXIiOiAiIiwgInBvcm5fcGhvdG9faGVhZGVyMiI6ICIiLCAicG9ybl9waG90b19mb290ZXIiOiAiIiwgInBvcm5fcGhvdG9fd2VudG91IjogIiIsICJoZWlsaWFvX2hlYWRlciI6ICIiLCAiaGVpbGlhb19mb290ZXIiOiAiIiwgImhlaWxpYW9fYXJ0aWNhbCI6ICIiLCAibWF6aW5vdGUiOiAiXHU5NzAwXHU4OTgxXHU5MDgwXHU4YmY3XHU3OGJjXHU4YmY3XHU1MmEwXHU1ZmFlXHU0ZmUxOnN4c3VjY2VzcyIsICJzZWh1YXRhbmciOiAiaHR0cHM6Ly93YXJ3ZXRyZXR5cnkuY29tL3BvcnRhbC5waHAiLCAic2VodWF0YW5nMSI6ICJodHRwczovL3F3ZXdxZS5xdWVzdCIsICJzZWh1YXRhbmcyIjogImh0dHBzOi8vYXNkZnNhZHdxLm9uZSIsICJzZWh1YXRhbmczIjogImh0dHBzOi8vYXNkZmFzZmRkc2Yub25saW5lIiwgImphdmJ1czEiOiAiaHR0cHM6Ly93d3cuZG1tYnVzLmZ1biIsICJqYXZidXMyIjogImh0dHBzOi8vd3d3LmJ1c2phdi5mdW4iLCAiamF2YnVzMyI6ICJodHRwczovL3d3dy5qYXZzZWUuY2x1YiIsICJsdW50YW4yMDQ4MSI6ICJodHRwczovL2Jicy55eXl6LmNjLzIwNDgvIiwgImx1bnRhbjIwNDgyIjogImh0dHBzOi8vdG0uc2h1anV4dW4uY29tLzIwNDgvIiwgImx1bnRhbjIwNDgzIjogImh0dHBzOi8vbHNwLnNvdWFpcWluLmNvbS8yMDQ4LyJ9pythonpython
</span></pre>
</div>

标签:layout,自定义,url,mWebView1,header,cookie,import,android
来源: https://www.cnblogs.com/sdfasdf/p/15956796.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有