通过ShouldInterceptRequest发送JSON对象

时间:2013-05-30 12:31:55

标签: javascript android webview httprequest

我正在使用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对象而不是字符串?

谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

我发现的唯一解决方案是改变我的JavaScript。 Mime类型没有效果。

我正在使用JQuery.ajax()方法(http://api.jquery.com/jQuery.ajax/),在配置中将dataType设置为JSON,这个方法适用于我。我意识到这是间接执行JSON.parse但它似乎仍然在浏览器中工作,它以前自动检测类型,因此不需要捕获解析失败,因为它已经是一个对象。