- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个连接到本地主机的简单 Android 应用程序。我已成功创建注册页面,应用程序可以毫无问题地注册新用户。我正在使用 Volley 库来创建注册/登录。
问题出在登录功能上。当我填写登录详细信息并单击“登录”时,出现错误
09-11 13:59:16.856 16107-16107/com.example.virus.bloodpressurereader W/System.err: org.json.JSONException: Value <br of type java.lang.String cannot be converted to JSONArray
09-11 13:59:16.856 16107-16107/com.example.virus.bloodpressurereader W/System.err: at org.json.JSON.typeMismatch(JSON.java:111)
09-11 13:59:16.856 16107-16107/com.example.virus.bloodpressurereader W/System.err: at org.json.JSONArray.<init>(JSONArray.java:96)
09-11 13:59:16.856 16107-16107/com.example.virus.bloodpressurereader W/System.err: at org.json.JSONArray.<init>(JSONArray.java:108)
09-11 13:59:16.856 16107-16107/com.example.virus.bloodpressurereader W/System.err: at com.example.virus.bloodpressurereader.Login$1$1.onResponse(Login.java:71)
09-11 13:59:16.856 16107-16107/com.example.virus.bloodpressurereader W/System.err: at com.example.virus.bloodpressurereader.Login$1$1.onResponse(Login.java:65)
09-11 13:59:16.856 16107-16107/com.example.virus.bloodpressurereader W/System.err: at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:60)
09-11 13:59:16.856 16107-16107/com.example.virus.bloodpressurereader W/System.err: at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:30)
09-11 13:59:16.856 16107-16107/com.example.virus.bloodpressurereader W/System.err: at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99)
09-11 13:59:16.856 16107-16107/com.example.virus.bloodpressurereader W/System.err: at android.os.Handler.handleCallback(Handler.java:739)
09-11 13:59:16.856 16107-16107/com.example.virus.bloodpressurereader W/System.err: at android.os.Handler.dispatchMessage(Handler.java:95)
09-11 13:59:16.856 16107-16107/com.example.virus.bloodpressurereader W/System.err: at android.os.Looper.loop(Looper.java:148)
09-11 13:59:16.856 16107-16107/com.example.virus.bloodpressurereader W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5417)
09-11 13:59:16.856 16107-16107/com.example.virus.bloodpressurereader W/System.err: at java.lang.reflect.Method.invoke(Native Method)
09-11 13:59:16.856 16107-16107/com.example.virus.bloodpressurereader W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
09-11 13:59:16.856 16107-16107/com.example.virus.bloodpressurereader W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
我的login.php文件是这个
<?php
require "conn.php";
$user_email = $_POST["userEmail"];
$user_password = $_POST["userPass"];
$sql = "select name, email from user_profile where email = '$user_email' and password = '$user_password'";
$result = mysqli_query($conn, $sql);
$response = array();
if(mysqli_num_rows($result) > 0){
$row = mysqli_fetch_row($result);
$name = $row[0];
$email = $row[1];
$code = "login success";
array_push($response, array("code"=>$code, "name"=>$name, "email"=>$email));
echo json_encode($response);
}else {
$code = "login failed";
$message = "user not found.. Try again";
array_push($response, array("code"=>$code,"message"=>$message));
echo json_encode($response);
}
mysqli_close($conn);
?>
我的login.java文件是这个
package com.example.virus.bloodpressurereader;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.support.annotation.MainThread;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
public class Login extends AppCompatActivity {
EditText email, password;
Button loginUser;
String userEmail, userPassword;
String login_url = "http://192.168.0.144/login.php";
AlertDialog.Builder builder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
builder = new AlertDialog.Builder(Login.this);
loginUser = (Button)findViewById(R.id.login_button);
email = (EditText) findViewById(R.id.login_email);
password = (EditText)findViewById(R.id.login_password);
loginUser.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//check conditions for user email and password
userEmail = email.getText().toString();
userPassword = password.getText().toString();
if(userEmail.equals("") || userPassword.equals("")){
builder.setTitle("Something went wrong");
displayAlert("Enter a valid email and password");
}else {
//authenticate from server
StringRequest stringRequest = new StringRequest(Request.Method.POST, login_url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
//handle response from server
try {
JSONArray jsonArray = new JSONArray(response);
JSONObject jsonObject = jsonArray.getJSONObject(0);
String code = jsonObject.getString("code");
if (code.equals("login failed")){
builder.setTitle("Login error");
displayAlert(jsonObject.getString("message"));
}else {
Intent i = new Intent(Login.this, MainActivity.class);
startActivity(i);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(Login.this, "Error", Toast.LENGTH_SHORT).show();
error.printStackTrace();
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("email", userEmail);
params.put("password", userPassword);
return params;
}
};
MySingleton.getInstance(Login.this).addToRequestque(stringRequest);
}
}
});
}
//display alert
public void displayAlert(String message){
builder.setMessage(message);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
email.setText("");
password.setText("");
}
});
AlertDialog alertDialog = builder.create();
alertDialog.show();
}
//registration link
public void registerUser(View view){
Intent i = new Intent(this, Register.class);
startActivity(i);
}
}
如果我没有在登录页面中输入任何内容并单击登录,则会显示正确的警报,但是,一旦输入电子邮件和密码并单击登录,我就会收到上述错误。
我的 PHP 脚本工作正常,因为我创建了一个虚拟的 login.html 并对其进行了测试。在这种情况下我得到了正确的响应。
最佳答案
(代表 OP 发布解决方案)。
改变
$user_email = $_POST["userEmail"];
$user_password = $_POST["userPass"];
到
$user_email = $_POST["email"];
$user_password = $_POST["password"];
关于php - 无法登录 Android 应用程序。错误 : org. json.JSONException : Value <br of type java. lang.String 无法转换为 JSONArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46157706/
我们的 CMS 将换行符输出为 (愚蠢,我知道,但在语法上是正确的(?)) 这转换为 在 chrome 和 IE10 中到 在火狐中。 所有浏览器都将其显示为两个换行符。 为什么不是翻译成或者只是
我正在尝试将一堆 HTML 文档转换为 XML 合规性(通过 java 方法),并且有很多 (1) 未封闭或 (2) 包含属性的标签。由于某种原因,我使用的正则表达式无法处理包含属性的标签。这是代码
如何转换字符串 "" to "" using java's String.replaceAll(String, String) method? 我都试过了: str.replaceAll("+
这个问题的答案是 community effort 。编辑现有答案以改进这篇文章。它目前不接受新的答案或交互。 我试过检查 other answers ,但我仍然感到困惑——尤其是在看到 W3scho
问题是我无法通过生产者脚本将消息发送到集群内的任何代理。 该设置是一个单一的 Zookeeper 服务器,使用默认设置在 IP (192.168.10.2:2181) 上运行。 此外,还有 3 个代理
我正在尝试使用 python 和 Beautiful Soup 4 用新行替换某些 html 中的每个中断标记。 该文档有 , 和标签,但由于 Beautiful Soup 处理标签的方式,每当它找到
我正在使用带有模板工具包的 perl 生成网页,我在 HTML 文件上更改了一些 JS 代码,编辑后有 显示在 UI 上,我不知道如何,奇怪的是没有 源码中,只有在Inspect element On
这是 HTML 页面的完整源代码: one two three four 谁能解释一下为什么我在IE8或chrome浏览页面时,“三”和“四”之间多了一个空行? 我认为标准应该让所有
我正在使用 并且它按预期在 chrome 和 IE 中正常工作,但在 firefox 中结果很奇怪。当我在 firefox 中看到代码时,它替换了 与 . 我还在某处读到替代语法 XML 允许在许
我有将 BBCode 替换为 html 的代码,当我想替换标签时出现问题 或 [br /]在 [pre=html] code [/pre] 内. Regex exp; string str; str
这个问题不太可能对任何 future 的访客有帮助;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于互联网的全局受众。如需帮助使这个问题更广泛适用,visit the h
我正在使用这个(jQuery)来替换所有 与清除验证错误: $("").replaceAll(""); 但它不会减少任何验证错误。验证器是否检查原始来源? 最佳答案 JQuery 仅在文档呈现后才
我想获取 break html 中的文本,但这不是用段落换行,只是break内的文本。 Division 是我唯一的标识符,它是“Msg”。我怎样才能获得每个元素之一? H
Hood switch - (automatic transmission only).<br><br>Hood Switch (2013 CX-5 - not requir
我想选择 br 后面没有跟另一个 br 的元素。 例如。 sometextadsf 我想选择这两个元素。 sometextadsf 我只想选择 2 个 br 元素,而不是 4 个。 我看过这个问题,但
这个问题在这里已经有了答案: HTML 5: Is it , , or ? (18 个答案) 关闭 9 年前。 当我开始从 w3schools 学习 HTML 时,他们正在使用这个 .当我开始学习
我是 nagios 新手,我已经在我的 Linux 机器上安装了 nagios 3。 我想安装 nagios check_procs 插件。有人可以建议我吗。谢谢 最佳答案 您可以从依赖于您使用的 L
我有一个段落有一些单一的 和双 . 我想添加所有单个 , 但不是双 . 这怎么可能? 如果我用 p br {display:none} 它隐藏了所有的 br 标签。但是,当我有两个 br 时,我希
之间的主要区别是什么?和 在 html 标记中?有人可以解释两者的主要区别,因为这让我感到困惑。预先感谢您的所有评论。 :) 最佳答案 在实践中,不存在。就或 . 但是,区别在于位置,并且对所有
我如何使用JavaScript来检测 成为一个 ? 我试过: jQuery('body').html().replace(/(\\r\n){3, }/g,"\n"); 但这对我不起作用。 最佳
我是一名优秀的程序员,十分优秀!