Показать в WebView контент, формируемый js-скриптом в теге html после получения параметра в php-файле
Мне нужно отобразить в WebView график, использующий параметр. Для этого я отправляю из приложения стандартным асинхронным запросом этот параметр на сервер в файл php, где он обрабатывается, и посредством JS скрипта график строится в теге div html кода. Вот этот php-файл:
<?php
Какой-то код.
?>
<html>
<head>
<script src="https://d3js.org/d3.v3.min.js"></script>
</head>
<body>
<div id="chart"></div>
<script type="text/javascript" src="report.js"></script>
</body>
</html>
При выполнении асинхронного запроса, в onPostExecute(String result) - в result график, разумеется не попадает.
Как мне вывести этот график в WebView? (желательно, без сторонних библиотек)
P.S. Если я отправляю этот параметр из формы в браузере, то график нормально отрисовывается.
P.P.S. В приложении на Android|Java я запускаю построение графика так:
Объявление WebView и запуск асинхронной отправки на сервер:
WevView wvReports = v.findViewById(R.id.wvReports);
new LoadReport().execute();
Асинхронная передача параметра на сервер:
public class LoadReport extends AsyncTask<String, Void, String> {
protected void onPreExecute(){}
protected String doInBackground(String... arg0) {
try {
URL url = new URL(ServerAPI.url_report);
// Формируем JSON из значений введенных в поля ввода:
JSONObject json = new JSONObject();
// Получение полей ввода:
json.put("uic", userID);
return netS.httpConn(json, url);
}
catch(Exception e){
return new String("Exception: " + e.getMessage());
}
}
@Override
protected void onPostExecute(String result) {
}
}
Это стандартная процедура создания соединения и передачи данных/получения ответа:
public static String httpConn(JSONObject json, URL url) {
try {
// Выводим, для проверки, JSON в log:
if(CurrentSettings.debugMsgVisualization)
Log.d("params",json.toString());
// Организуем HTTP-соединение:
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(15000 /* milliseconds */);
conn.setConnectTimeout(15000 /* milliseconds */);
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
// Создаем выходной поток и передаем в него JSON:
OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
writer.write(netS.getPostDataString(json));
writer.flush();
writer.close();
os.close();
int responseCode=conn.getResponseCode();
if (responseCode == HttpsURLConnection.HTTP_OK) {
BufferedReader in=new BufferedReader(new
InputStreamReader(
conn.getInputStream()));
StringBuffer sb = new StringBuffer("");
String line="";
while((line = in.readLine()) != null) {
sb.append(line);
break;
}
in.close();
return sb.toString();
}
else {
return new String("false : "+responseCode);
}
}
catch(Exception e){
if(CurrentSettings.debugMsgVisualization)
return new String("Exception: " + e.getMessage());
else
return new String("");
}
}
public static String getPostDataString(JSONObject params) throws Exception {
StringBuilder result = new StringBuilder();
boolean first = true;
Iterator<String> itr = params.keys();
while(itr.hasNext()){
String key= itr.next();
Object value = params.get(key);
if (first)
first = false;
else
result.append("&");
result.append(URLEncoder.encode(key, "UTF-8"));
result.append("=");
result.append(URLEncoder.encode(value.toString(), "UTF-8"));
}
return result.toString();
}