私は、Webviewでの提出からJsonRequestを取得する際に問題が少しあります。私はいくつかのコードを見ましたが、それらのどれも動作しないので、私は今までゼロからです。私はこの質問が繰り返されることを知っているが、私はまだ理解していない。アンドロイドスタジオでwebviewを使用してjsonリクエストを取得するにはどうすればよいですか?
私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);
?>
私はWebViewのログインシステム
を使用して、JSONレスポンスを、これをobtaintできるか、そのWebView web = (WebView) findViewById(R.id.miVisor3);
web.setWebViewClient(new ConsultaFacturas.MyWebViewClient());
WebSettings settings = web.getSettings();
settings.setJavaScriptEnabled(true);
web.loadUrl(URL_LISTA_CLIENTE);
を表示呼び出し、URLのWebすることを知っているが、
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();
}
}
こんにちは@ fishbone、私はあなたが私に与えた答えをチェックしていますが、私は分からないと "そしてWebViewに追加する:"最後まで、私はこれで私はかなり失われている。どのようにして "尋ねる"プロセスがエキサイティングなのでしょうか? 、私は自分のコードを更新しています –
'ADNROID.onResult(request.status、request.responseText);'は、 'WebView.'に表示されたあなたのWebページ上のJavaScriptで実行する必要があります。 Java。 私は、サーバーでのすべての操作(ユーザー名とパスワードの入力と送信)はJavaScriptで実行する必要があることを覚えています。メソッド 'WevView.loadUrl()'は、WebページにログインフォームとJavaScriptコードをロードするためにのみ使用し、サーバーにリクエストを送信し、結果を取得し、その結果をJavaに転送します。 – fishbone