我是新来的,我不会说英语,但我会尽力解释。 我对Post请求有一些问题。这是我的代码:
private void makeRequest() {
String url = "http://diegocardenas.netau.net/comprobar_usuario.php";
JsonObjectRequest request1=new JsonObjectRequest(Method.POST, url, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
onConnectionFinished();
Usuario usuario = new Gson().fromJson(response.toString(), Usuario.class);
if (usuario != null) {
Log.i("App1", "Nombre:" + usuario.getNombre() + " Correo: " + usuario.getCorreo());
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
onConnectionFailed(error.toString());
Log.i("App1", error.getMessage());
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> params=new HashMap<>();
params.put("correo","daniel@gmail.com");
params.put("clave","daniel");
return params;
}
};
addToQueue(request1);
}
这是Usuario课程:
public class Usuario {
private int cod_usuario, contador, estado;
private String nombre, correo;
public Usuario() {
}
public int getCod_usuario() {
return cod_usuario;
}
public void setCod_usuario(int cod_usuario) {
this.cod_usuario = cod_usuario;
}
public int getContador() {
return contador;
}
public void setContador(int contador) {
this.contador = contador;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getCorreo() {
return correo;
}
public void setCorreo(String correo) {
this.correo = correo;
}
public int getEstado() {
return estado;
}
public void setEstado(int estado) {
this.estado = estado;
}
}
和我的PHP ...抱歉,但我是PHP的初学者
comprobar_usuario.php
<?php
header('Content-Type: text/html; charset=UTF-8');
include_once('usuario.class.php');
$usuario=new Usuario();
$correo=$_POST['correo'];
$clave=$_POST['clave'];
echo json_encode($usuario->getJSONUsuario($correo,$clave));
?>
usuario.class.php
<?php
include_once('database.class.php');
class Usuario{
public function getJSONUsuario($correo,$clave){
$json= array();
$result=$this->comprobarUsuario($correo,$clave);
if(mysql_num_rows($result)){
while ($row=mysql_fetch_row($result)) {
$json[]=array('nombre'=>$row[1], 'correo'=>$row[2],
'contador'=>$row[5]);
}
}
return $json;
}
private function comprobarUsuario($correo, $clave){
$consulta="SELECT * FROM usuario WHERE correo='".$correo."'
AND clave='".$clave."'";
$db=new Database();
return $db->ejecutarConsulta($consulta);
}
}
?>
database.class.php
<?php
include_once('datos_conexion.class.php');
class Database{
public function ejecutarConsulta($consulta){
$conexion=mysql_connect(DatosConexion::getServidor(), DatosConexion::getUsuarioConexion(),
DatosConexion::getClaveConexion());
mysql_set_charset('utf8',$conexion);
if(!$conexion){
die('No se pudo conectar al servidor: '.mysql_error());
}else{
mysql_select_db(DatosConexion::getDataBase(),$conexion);
$resultado=mysql_query($consulta);
mysql_close();
return $resultado;
}
}
}
?>
表:Usuario
字段:cod_usuario Int,nombre Varchar,correo Varchar,clave Varchar,estado Boolean,contador Int
EDITED 日志:
05-28 09:52:02.921 10862-11210/com.diego.app1I/qtaguid﹕ Failed write_ctrl(u 67) res=-1 errno=22
05-28 09:52:02.921 10862-11210/com.diego.app1I/qtaguid﹕ Untagging socket 67 failed errno=-22
05-28 09:52:02.921 10862-11210/com.diego.app1W/NetworkManagementSocketTagger﹕ untagSocket(67) failed with errno -22
05-28 09:52:02.921 10862-10862/com.diego.app1 I/App1﹕ org.json.JSONException: Value [] of type org.json.JSONArray cannot be converted to JSONObject
我使用GET证明连接并且我返回了数据,但是当使用POST失败时所有xD 我认为问题是方法getparams ...
请帮助!!!!
答案 0 :(得分:0)
如果您认为问题出在getParams上,那么使用Volley您不必使用getParams,它知道如何处理JSONObject以便您可以使用:
String someurl = URL;
Map<String, Object> jsonParams = new HashMap<>();
jsonParams.put("someparam", getSomeParam());
JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, someurl, new JSONObject(jsonParams),
new Response.Listener<JSONObject>()
{
@Override
public void onResponse(JSONObject response)
{
Log.d(TAG + ": ", "Response: " + response.toString());
//do other stuff
}
},
new Response.ErrorListener()
{
@Override
public void onErrorResponse(VolleyError error)
{
if (null != error.networkResponse)
{
Log.d(TAG + ": ", "Error Response code: " + error.networkResponse.statusCode);
}
}
});
requestQueue.add(request);
另外 - 确保Usuario类中的变量名与您在Json中返回的名称相匹配,如果它与Usuario中的变量不匹配,则默认为NULL。