前端项目通过bridge获取客户端资源,客户端直接返回response对象
iOS
open class URLSchemeHandler: NSObject, WKURLSchemeHandler {
open func webView(_ webView: WKWebView, start urlSchemeTask: WKURLSchemeTask) {
guard let url = urlSchemeTask.request.url, let scheme = url.scheme else { return }
let data = try Data(contentsOf: url)
if let response = self.createHTTPResponse(url: url, mimeType: filePathUrl.pathExtension.mimeType){
urlSchemeTask.didReceive(response)
urlSchemeTask.didReceive(data)
urlSchemeTask.didFinish()
}else{
urlSchemeTask.didFailWithError(NSError(domain: "URLShemeHandler", code: 100, userInfo: nil))
}
}
open override func createHTTPResponse(url: URL, mimeType: String, contentLength: Int = 0) -> URLResponse? {
let headerFields: [String:String] = [
"Content-Type": mimeType,
"Access-Control-Allow-Origin":"*",
"Access-Control-Allow-Methods":"GET, POST, PUT, DELETE",
"Access-Control-Allow-Headers":"Content-Type, Authorization"
]
let response = HTTPURLResponse(url: url, statusCode: 200, httpVersion: "HTTP/1.1", headerFields: headerFields)
return response
}
}安卓 腾讯x5
webView.setWebViewClient(new WebViewClient() {
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
String url = request.getUrl().toString();
// 拦截特定URL并返回自定义数据
if (url.contains("your-custom-path")) {
try {
// 生成自定义数据(如JSON)
String jsonData = "{\"status\": 200, \"data\": \"Hello X5\"}";
InputStream inputStream = new ByteArrayInputStream(jsonData.getBytes("UTF-8"));
// 构造响应头
Map<String, String> headers = new HashMap<>();
headers.put("Access-Control-Allow-Origin", "*"); // 允许所有域
headers.put("Access-Control-Allow-Methods", "GET, POST"); // 允许的HTTP方法
headers.put("Content-Type", "application/json"); // 数据类型
// 构造WebResourceResponse(MIME类型、编码、输入流、头信息)
return new WebResourceResponse("application/json", "UTF-8", 200, "OK", headers, inputStream);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
// 默认行为:不拦截,由WebView自行加载
return super.shouldInterceptRequest(view, request);
}
});
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 风屋
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果