【发布时间】:2017-11-20 03:35:53
【问题描述】:
我在尝试从 Webview 上的提交中获取 JsonRequest 时遇到了一点问题。我看过一些代码,但它们都不起作用,所以到目前为止我是从零开始的。我知道这个问题是重复的,但我还是不明白。
我的 html.php
<?php
require_once('../Con/Conexion.php');
$username = $_POST['userName'];
$passw = $_POST['userPwd'];
$statement=mysqli_prepare($connection,"SELECT idTrabajador,`Nombre del Trabajador`,`Unidades por Vender` FROM `tablausuario` WHERE `Usuario`=? AND Contrasena=?");
mysqli_stmt_bind_param($statement,"ss",$username,$passw);
mysqli_stmt_execute($statement);
mysqli_stmt_store_result($statement);
mysqli_stmt_bind_result($statement,$idTrabajador,$name,$uxv);
$response = array();
$response["success"] = false;
while(mysqli_stmt_fetch($statement)){
$response["success"] = true;
$response["idTrabajador"] = $idTrabajador;
$response["Nombre del Trabajador"] = $name;
$response["Unidades por Vender"] = $uxv;
}
echo json_encode($response);
mysqli_close($connection);
?>
我知道要调用和 URL Web 查看它
WebView web = (WebView) findViewById(R.id.miVisor3);
web.setWebViewClient(new ConsultaFacturas.MyWebViewClient());
WebSettings settings = web.getSettings();
settings.setJavaScriptEnabled(true);
web.loadUrl(URL_LISTA_CLIENTE);
但是,我怎样才能得到这个,使用 webview 登录系统的 Json 响应
try {
JSONObject jsonResponse = new JSONObject(response);
boolean success = jsonResponse.getBoolean("success");
if (success) {
String idTra = jsonResponse.getString("idTrabajador");
String naMe = jsonResponse.getString("Nombre del Trabajador");
String uxv = jsonResponse.getString("Unidades por Vender");
Intent openLog = new Intent(LoginActivity.this, MenuPrincipal.class);
openLog.putExtra("idTrabajador", idTra);
openLog.putExtra("Nombre del Trabajador", naMe);
openLog.putExtra("Unidades por Vender", uxv);
LoginActivity.this.startActivity(openLog);
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this);
builder.setMessage("Error de Login, Verifique su conexion o los datos ingresados")
.setNegativeButton("Reintentar", null).create().show();
}
} catch (JSONException e) {
e.printStackTrace();
}
*更新 *
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
WebView web = (WebView) findViewById(R.id.miVisor30);
web.setWebViewClient(new LoginActivity.MyWebViewClient());
WebSettings settings = web.getSettings();
settings.setJavaScriptEnabled(true);
web.addJavascriptInterface(new WebViewResultListener(), "ANDROID");**SHOWS ERROR**
ADNROID.onResult(request.status, request.responseText);**SHOWS ERROR**
web.loadUrl(URL_LISTA_CLIENTE);
}
private class MyWebViewClient extends WebViewClient {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
public class WebViewResultListener {
@JavascriptInterface
public void onResult(int code, String response) {
if (code == HttpURLConnection.HTTP_OK) {
try {
JSONObject jsonResponse = new JSONObject(response);
boolean success = jsonResponse.getBoolean("success");
if (success) {
String idTra = jsonResponse.getString("idTrabajador");
String naMe = jsonResponse.getString("Nombre del Trabajador");
String uxv = jsonResponse.getString("Unidades por Vender");
Intent openLog = new Intent(LoginActivity.this, MenuPrincipal.class);
openLog.putExtra("idTrabajador", idTra);
openLog.putExtra("Nombre del Trabajador", naMe);
openLog.putExtra("Unidades por Vender", uxv);
LoginActivity.this.startActivity(openLog);
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this);
builder.setMessage("Error de Login, Verifique su conexion o los datos ingresados")
.setNegativeButton("Reintentar", null).create().show();
}
} catch (JSONException e) {
e.printStackTrace();
}
} else {
Log.e("WebViewResultListener", "Error code=" + code);
}
}
}
@Override
public void onBackPressed() {
super.onBackPressed();
finish();
}
}
【问题讨论】: