【发布时间】:2016-06-10 11:20:19
【问题描述】:
我正在尝试创建一个连接到 mysql 数据库的简单登录应用程序。 该应用程序在我在 localhost 中测试时可以正常工作,但是当我将数据库和 php 脚本上传到托管服务器( Byethost )时,它无法正常工作, 问题似乎与服务器的响应字符串有关,它不是“JSON”
正如我上面提到的,当我在 localhost 中测试应用程序时,它工作得很好。
这里是 Andorid 代码
requestQueue = Volley.newRequestQueue(this);
StringRequest stringRequest = new StringRequest(Request.Method.POST, login_url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try{
Log.d("#-SERVER RESPONSE-#",response);
JSONObject jsonObject = new JSONObject(response);
Log.d("#-LOGIN STATUS-#",jsonObject.getString("status"));
} catch (Exception e){
Log.d("#-JSON ERROR-#",e.toString());
}//end if
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("#-VOLLEY ERROR-#",error.toString());
}
}){
@Override
public Map<String,String> getParams(){
Map<String,String> params = new HashMap<>();
params.put(KEY_USERNAME,username);
params.put(KEY_PASSWORD,password);
return params;
}
};
requestQueue.add(stringRequest);
这里是php代码
$username = mysqli_real_escape_string($connection,$_POST['username']);
$password = mysqli_real_escape_string($connection,$_POST['password']);
$query = "SELECT * FROM user WHERE username='{$username}' AND password='{$password}'";
$result = mysqli_query($connection,$query);
$json_reply['status'] = 1; //erorr by default
if(mysqli_num_rows($result) > 0){
$json_reply['status'] = 0; //success
}
print(json_encode($json_reply));
这是 Android Monitor 窗口的输出。
响应字符串
<html><body><script type="text/javascript" src="/aes.js" ></script><script>function toNumbers(d){var e=[];d.replace(/(..)/g,function(d){e.push(parseInt(d,16))});return e}function toHex(){for(var d=[],d=1==arguments.length&&arguments[0].constructor==Array?arguments[0]:arguments,e="",f=0;f<d.length;f++)e+=(16>d[f]?"0":"")+d[f].toString(16);return e.toLowerCase()}var a=toNumbers("f655ba9d09a112d4968c63579db590b4"),b=toNumbers("98344c2eee86c3994890592585b49f80"),c=toNumbers("99efa97c59e1cf6146f7e801802ed6bc");document.cookie="__test="+toHex(slowAES.decrypt(c,2,a,b))+"; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/"; document.cookie="referrer="+escape(document.referrer); location.href="http://zsoft.byethost8.com/login.php?ckattempt=1";</script><noscript>This site requires Javascript to work, please enable Javascript in your browser or use a browser with Javascript support</noscript></body></html>
【问题讨论】:
-
显示你的执行网络服务的代码
-
你能从服务器发布完整的响应字符串吗?它看起来像一个普通的 HTML 站点。
-
@Mono 其实很奇怪,我会用响应字符串更新问题
-
您在 android 代码的 volley 请求中在哪里传递用户名和密码?
-
@Vickyexpert 我将它们作为两个参数(用户名、密码)传递,我刚刚发布了函数的主体。我想知道为什么它在我的本地主机中运行良好
标签: android json android-volley