我正在使用android函数ShouldInterceptRequest来拦截我的webview的请求。但是我需要在拦截请求时发送一些数据(一个JSON对象)。我知道android函数必须返回一个WebResourceResponse对象,该对象包含mimetype,encoding和包含我想要发送的数据的流。我尝试了很多解决方案,但每次我在寻找Javascript中收到的数据类型时,它总是一个STRING,我绝对需要一个JSON对象(不想做JSON解析)。
我的ShouldInterceptRequest中的InputStream的java代码:
stream = new ByteArrayInputStream(jsObject.toString().getBytes("UTF-8"));
return new WebResourceResponse("application/json; charset=UTF-8", null, stream);
那么,有没有办法将JSON对象转换为流(InputStream或其他东西),以便直接接收JSON对象而不是字符串?
谢谢你的帮助!
答案 0 :(得分:0)
我发现的唯一解决方案是改变我的JavaScript。 Mime类型没有效果。
我正在使用JQuery.ajax()方法(http://api.jquery.com/jQuery.ajax/),在配置中将dataType设置为JSON,这个方法适用于我。我意识到这是间接执行JSON.parse但它似乎仍然在浏览器中工作,它以前自动检测类型,因此不需要捕获解析失败,因为它已经是一个对象。