当我向服务器发布一些url时,我试图在webview中获取响应标题。我使用的是shouldInterceptRequest方法。
@Override
public WebResourceResponse shouldInterceptRequest(final WebView view, final WebResourceRequest request) {
if(request.getUrl().toString().contains(SMConstant.INTERCEPTED_URL)){
if(interceptFlag==0){
((Activity) mContext).runOnUiThread(new Runnable(){
@Override
public void run() {
view.postUrl(request.getUrl().toString(), EncodingUtils.getBytes(postData, "UTF-8"));
}
});
interceptFlag++;
}
}
return super.shouldInterceptRequest(view, request);
}
此方法返回WebResource响应对象。但我不知道如何从中获取响应标头。
默认情况下,返回super。shouldInterceptRequest(视图、请求) 返回null。
那么,应该做些什么才能捕捉到实际的webview响应呢。
尝试此代码(需要API VERSION 21):
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
if (request.getUrl().toString().contains("some_char")) {// condition to intercept webview's request
return handleIntercept(request);
} else
return super.shouldInterceptRequest(view, request);
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private WebResourceResponse handleIntercept(WebResourceRequest request){
OkHttpClient okHttpClient = new OkHttpClient();
final Call call = okHttpClient.newCall(new Request.Builder()
.url(request.getUrl().toString())
.method(request.getMethod(),null)
.headers(Headers.of(request.getRequestHeaders()))
.build()
);
try {
final Response response = call.execute();
response.headers();// get response header here
return new WebResourceResponse(
response.header("content-type", "text/plain"), // You can set something other as default content-type
response.header("content-encoding", "utf-8"), //you can set another encoding as default
response.body().byteStream()
);
} catch (IOException e) {
e.printStackTrace();
return null
}
}
参考:在WebView中访问http响应头?
https://artemzin.com/blog/use-okhttp-to-load-resources-for-webview/
问题内容: 我有一个包含表单(帖子)的html。单击某些提交按钮时,我会收到JSON响应。 如何获取此JSON? 如果我不截取请求,则json将显示在Web视图上,所以我想应该使用(我正在使用API 12),但是我不知道如何在其中获取json。 还是有更好的方法,例如拦截响应而不是请求? 谢谢 问题答案: 您应该重写的方法
相关问题 < code>Json的响应是< code >新行分隔符Json: 我正在使用来提出请求: 我可以在我的中看到响应,但收到以下错误: 中格式错误的JSON < li >响应在< code>NdJson中,它无法正确解析它 如何正确解析它?
问题内容: 我正在尝试寻找在Android中发出USSD请求的方法。我找到了-http://commandus.com/blog/?p=58。我将所有需要的文件添加到我的项目中。 USSDDumbExtendedNetworkService.java: 表现: BootReceiver.java: 因此,现在该服务在启动完成后启动。 我的问题是我如何发送USSD请求并获得服务响应?谢谢!) 问题答
我的问题是我如何发送USSD请求并得到服务响应?(谢谢!)
我已经为android Studio创建了一个webview应用程序。但没有加载web URL。错误为NET::ERR_ACCESS_DENIED。有谁能帮忙吗
我使用了Web API控制器中的IActionResult和邮递员的加热方法,我的功能正在工作,但没有得到成功响应。我的代码是: Postman中的响应是:无法获得任何响应连接到https://localhost:44303/api/pousada/markasinactive时出错。可能发生这种情况的原因:服务器无法发送响应:确保后端正常工作自签名SSL证书被阻止:通过关闭设置>常规代理配置错误