web前端工作资料怎么做,WebView的使用及实战,web开发前景怎么样

super.onReceivedError(view, errorCode, description, failingUrl);

if (errorCode == 404) {

//用javascript隐藏系统定义的404页面信息

String data = “Page NO FOUND!”;

view.loadUrl(“javascript:document.body.innerHTML=”" + data + “”");

}

}

当然实际开发中为了给用户比较还要的体验,会做非常多的处理,包括有网络情况和没有网络情况的处理,对于没有网络情况的处理,这里我们跳转到打开WiFi界面,详情可以参照我的 上一篇博客android 监听网络状态的变化及实战,而对于有网络情况的处理,这里我们只处理404错误,其他错误请根据项目的需求自行处理。

@SuppressWarnings(“deprecation”)

@Override

public void onReceivedError(WebView view, int errorCode, String description, String

failingUrl) {

super.onReceivedError(view, errorCode, description, failingUrl);

// 没有网络连接

if (false == APP.getInstance().isConnected()) {

APP.getInstance().showWifiDlg(NewsDetailActivity.this);

} else {

if (errorCode == 404) {

//用javascript隐藏系统定义的404页面信息

String data = “Page NO FOUND!”;

view.loadUrl(“javascript:document.body.innerHTML=”" + data + “”");

mWebView.setVisibility(View.INVISIBLE);

} else {//其他状态码错误的处理,这里就不罗列出来了

}

}

}


webView cookie的同步与清除


关于这个问题,我们主要分为两步,

- 怎样获取cookie

- 怎样将cookie与webView进行 同步

对于怎样获取 cookie,主要有以下方法

下面只给出核心代码

第一,使用DefaultHttpClient

DefaultHttpClient client = new DefaultHttpClient();

CookieStore store = client.getCookieStore();

List list = store.getCookies();

第二,使用HttpURLConnection

URLConnection con= (HttpURLConnection) url.openConnection();

// 取得sessionid.

String cookieval = con.getHeaderField(“set-cookie”);

String sessionid;

if(cookieval != null) {

sessionid = cookieval.substring(0, cookieval.indexOf(“;”));

}

发送设置cookie:

URL url = new URL(requrl);

HttpURLConnectioncon= (HttpURLConnection) url.openConnection();

if(sessionid != null) {

con.setRequestProperty(“cookie”, sessionid);

}

第三,使用Retrofit

Call call = tnGouAPi.getTest(test);

call.enqueue(new Callback() {

@Override

public void onResponse(Call call, Response response) {

ResponseBody body = response.body();

Headers headers = response.headers();

Set names = headers.names();

for(String key:names){

String value = headers.get(key);

}

try {

Logger.i(“onResponse: body=” + body.string());

} catch (IOException e) {

e.printStackTrace();

}

}

@Override

public void onFailure(Call call, Throwable t) {

Logger.i(“onResponse: t=” + t.getMessage());

}

});

cookie 同步

/**

  • cookie同步

*/

@SuppressWarnings(“deprecation”)

private void syncCookieToWebView(String url,List cookies)

{

CookieSyncManager.createInstance(this);

CookieManager cm = CookieManager.getInstance();

cm.setAcceptCookie(true);

if(cookies!=null)

{

for (String cookie : cookies)

{

cm.setCookie(url,cookie);//注意端口号和域名,这种方式可以同步所有cookie,包括sessionid

}

}

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {

CookieManager.getInstance().flush();

} else {

CookieSyncManager.getInstance().sync();

}

}

清除cookie

@SuppressWarnings(“deprecation”)

public void clearCookies(Context context) {

CookieSyncManager.createInstance(context);

CookieManager cookieManager = CookieManager.getInstance();

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

cookieManager.removeAllCookies(null);

} else {

cookieManager.removeAllCookie();

}

}

注意事项

  1. 同步cookie要在WebView加载url之前,否则WebView无法获得相应的cookie,也就无法通过验证。

  2. 每次登录成功后都需要调用”syncCookie”方法将cookie同步到WebView中,同时也达到了更新WebView的cookie。如果登录后没有及时将cookie同步到WebView可能导致WebView拿的是旧的session id和服务器进行通信。


webView 下载文件的两种方法


总共 有两种 方法,

- 第一种,自己实现实现逻辑 ,下载,保存到相应目录;

- 第二种,调用系统的下载方法

核心代码如下

主要是给webView设置DownloadListener监听器

mWebView.setDownloadListener(new DownloadListener() {

@Override

public void onDownloadStart(String url, String userAgent, String contentDisposition,

String mimetype, long contentLength) {

//第一种下载方式是 自定义的http工具类

// new HttpDownloadThread(url,contentDisposition,mimetype,contentLength).start();

//第二种下载方式是调用系统的webView,具有默认的进度条

Intent intent = new Intent(Intent.ACTION_VIEW);

intent.setData(Uri.parse(url));

startActivity(intent);

}

});

HttpDownloadThread

public class HttpDownloadThread extends Thread {

private String mUrl;

private String mContentDisposition;

private String mMimetype;

private long mContentLength;

public HttpDownloadThread(String url, String contentDisposition, String mimetype, long contentLength) {

this.mUrl = url;

this.mContentDisposition=contentDisposition;

this.mContentDisposition=mimetype;

this.mContentDisposition=contentDisposition;

}

@Override

public void run() {

URL url;

try {

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

总结

  • 框架原理真的深入某一部分具体的代码和实现方式时,要多注意到细节,不要只能写出一个框架。

  • 算法方面很薄弱的,最好多刷一刷,不然影响你的工资和成功率😯

  • 在投递简历之前,最好通过各种渠道找到公司内部的人,先提前了解业务,也可以帮助后期优秀 offer 的决策。

  • 要勇于说不,对于某些 offer 待遇不满意、业务不喜欢,应该相信自己,不要因为当下没有更好的 offer 而投降,一份工作短则一年长则 N 年,为了幸福生活要慎重选择!!!

喜欢这篇文章文章的小伙伴们点赞+转发支持,你们的支持是我最大的动力!

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

到细节,不要只能写出一个框架。

  • 算法方面很薄弱的,最好多刷一刷,不然影响你的工资和成功率😯

  • 在投递简历之前,最好通过各种渠道找到公司内部的人,先提前了解业务,也可以帮助后期优秀 offer 的决策。

  • 要勇于说不,对于某些 offer 待遇不满意、业务不喜欢,应该相信自己,不要因为当下没有更好的 offer 而投降,一份工作短则一年长则 N 年,为了幸福生活要慎重选择!!!

喜欢这篇文章文章的小伙伴们点赞+转发支持,你们的支持是我最大的动力!

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-cwAUOieX-1712452158036)]

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值