【发布时间】:2016-09-10 16:35:31
【问题描述】:
我正在尝试使用 POST 方法将数据从 android 发送到 php
单独测试 php 部分,它 100% 正常工作,它返回一个 json 字符串,如预期的那样
android 部分不工作 它不打印错误 甚至是所需的响应
这是代码,它已经过测试,使用 Toast 打印一个字符串“test”,但它在 volley 代码中没有改变:(
这是php代码:
<?php
require_once(__DIR__.'/../dbConnect.php');
$userName=$_POST['username'];
$query = "SELECT * FROM users WHERE username='$userName'";
$result = pg_query($con, $query);
$rows = pg_num_rows($result);
while ($row = pg_fetch_row($result))
{
$field = pg_num_fields( $result );
for ( $i = 0; $i < $field; $i++ ) {
$name = pg_field_name( $result, $i );
$user_arr[$name] = $row[$i];
}
}
echo json_encode($user_arr);
pg_close($con);
?>
这是安卓代码:
初始化测试字符串以显示输出
String test = "none";
这是我调用方法的地方
setUserData(username);
Toast.makeText(LoginActivity.this, test, Toast.LENGTH_SHORT).show();
这就是方法:
private void setUserData(final String username)
{
StringRequest strReq = new StringRequest(Request.Method.POST,
Server.GET_USERDATA_URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
test= "test = "+response;
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
Toast.makeText(LoginActivity.this, volleyError.getMessage().toString(), Toast.LENGTH_LONG).show();
}
})
{
@Override
protected Map<String, String> getParams() {
// Posting parameters to getData url
Map<String, String> params = new HashMap<String, String>();
params.put(Server.KEY_USERNAME, username);
return params;
}
};
//Creating a Request Queue
RequestQueue requestQueue = Volley.newRequestQueue(this);
//Adding request to the queue
requestQueue.add(strReq);
}
【问题讨论】:
-
你是加断点还是登录
onResponse查看是否被调用 -
您是否等待 5-6 秒让 webrequest 完成并查看是否打印了测试值?
标签: java php android android-volley