Java android修改webview的url内容
我的问题是发送url请求、捕获结果、修改结果并在java应用程序的webview中显示它。 我有一个大的应用程序,使用了带有OpenGL ES的C++代码,用于“本地游戏”,并且针对不同的目标设备建立了不同的前端构建。 在我的Android版本中,我想添加一些类似新闻页面的内容。为此,我有一个新闻服务器。我向我的服务器url发送请求(包含平台版本、语言代码等的特定slug),并以.json格式接收数据,我必须使用自己的标题、横幅、样式等格式化数据 例如->URL请求->返回我Java android修改webview的url内容,java,android,webview,Java,Android,Webview,我的问题是发送url请求、捕获结果、修改结果并在java应用程序的webview中显示它。 我有一个大的应用程序,使用了带有OpenGL ES的C++代码,用于“本地游戏”,并且针对不同的目标设备建立了不同的前端构建。 在我的Android版本中,我想添加一些类似新闻页面的内容。为此,我有一个新闻服务器。我向我的服务器url发送请求(包含平台版本、语言代码等的特定slug),并以.json格式接收数据,我必须使用自己的标题、横幅、样式等格式化数据 例如->URL请求->返回我 { "st
{
"status": "success",
"data": {
"general":[
{
"news_id": "31",
"title": "The title of my news",
"text":"news Text.."
}
...
]
}
}
到目前为止,我有一个DialogFragment类,它包含一个WebView作为成员。我使用了WebViewClient类,但最终在显示结果之前无法捕获结果。
每次我看到WebView/WebViewClient的文档时,我都在寻找一个点,那就是我可以偷偷地得到url结果
有人能帮我用简单的代码解释一下这项网络技术吗?甚至能帮我详细解决我的问题吗?我发现我的方法对于我的问题来说是复杂的(感谢MH.给我指出这一点) 相反,我通过HttpClient捕获URL请求,解析它并将其作为html字符串直接提供给视图。不幸的是,这必须在一个单独的线程中完成(或者使用外部java源代码,比如) 类NewsLoaderTask扩展了异步任务{
private WebView webView;
public void init(WebView _webView)
{
webView = _webView;
}
protected String doInBackground(String... urlStrings) {
try {
URI webUrl = new URI(urlStrings[0]);
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = httpclient.execute(new HttpGet(webUrl));
StatusLine statusLine = response.getStatusLine();
if(statusLine.getStatusCode() == HttpStatus.SC_OK){
ByteArrayOutputStream out = new ByteArrayOutputStream();
response.getEntity().writeTo(out);
String responseString = out.toString();
out.close();
return responseString;
} else{
//Closes the connection.
response.getEntity().getContent().close();
throw new IOException(statusLine.getReasonPhrase());
}
} catch (Exception e)
{
Log.i("NewsFragment", "exepction: " + e.toString());
}
return "";
}
protected void onPostExecute(String result) {
// TODO parse my text
// The baseurl points to the path with the .css and as entry point for gfx
webView.loadDataWithBaseURL("file:///android_asset/html/library/", outputString, "text/html; charset=utf-8", "UTF-8", null);
}
}
在我的WebView中,我创建了一个NewsLoaderTask实例,并用我的WebView作为参数初始化它(用于显示文本)
我已经为您改进了代码格式。在输入问题的框中,实际上有一个带有控件的栏,可以用于格式化目的。或者,如果您熟悉markdown,您可以直接在文本框中格式化内容,或者。更多关于主题:您可能不想使用
WebView
来显示Json内容。相反,发出http请求,解析Json响应并用该内容填充布局。根据您试图显示的数据类型,您的版面可能至少包含横幅的ImageView
,以及新闻项的ListView
。有很多例子更详细地描述了这些步骤。我认为一个关键词是“过滤”网页。我发现了一个很好的教程,但这展示了如何使用图像等资源。显示的文本是什么?我也可以用我的contet加载WebView,但是我需要获取我的url的内容。我几乎可以通过在ascy线程中通过httpclient加载url来解决这个问题。但是如果我加载url,我的.css就不会加载。我将其放置在与baseUrl相同的文件夹中。到目前为止,我的代码是:webView.loadDataWithBaseURL(“file:///android_asset/html/library/main.html,outputString,“text/html;charset=utf-8”,“utf-8”,null);
NewsLoaderTask newsloaderTask = new NewsLoaderTask();
newsloaderTask.init(webView);
newsloaderTask.execute(getArguments().getString("url"));