Я пытаюсь отправить эту андроидную форму данных json на php-сервер.
это мои json-данные {email: «user111@gmail.com», пароль: «00000»}, любая помощь в том, как декодировать эти json-данные на php-сервере
это мой код сервера php
<?php $response = array();` require_once __DIR__ . '/db_connect.php';` if(!isset($_POST['params'])){ $decoded=json_decode($_POST['params'],true) $email=json_decode['email']; $pass=json_decode['password']; // connecting to db $db = new DB_CONNECT();` $result = mysql_query("SELECT *FROM user WHERE email = $email"); if (!empty($result)) { // check for empty result if (mysql_num_rows($result) > 0) {` $result = mysql_fetch_array($result); $this->mylog("email".$email.",password".$pass); if($pass==$result[password]){ echo " password is correct"; $response["code"]=0; $response["message"]="sucess"; $response["user_id"]=$result["userid"]; $response["firstname"]=$result["fname"]; $response["lastname"]=$result["lname"]; echo json_encode($response); }else{ $response["code"]=3; $response["message"]="invalid password and email"; echo json_encode($response); } }else { // required field is missing $response["code"] = 1 ; $response["message"] = "no data found"; // echoing JSON response echo json_encode($response); } } }else { // required field is missing $response["code"] = 0; $response["message"] = "Required field(s) is missing"; // echoing JSON response echo json_encode($response); }?>
** этот мой код андроида json praser **
public JSONObject loginUser(String email, String password) { Uri.Builder loginURL2 = Uri.parse(web).buildUpon(); loginURL2.appendPath("ws_login.php"); JSONObject loginJSON = new JSONObject(); try { loginJSON.put("email", email); loginJSON.put("password", password); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } JSONObject json = jsonParser.getJSONFromUrl(loginURL2.toString(), loginJSON); return json; }
это моя функция отправки данных андроида json
public JSONObject getJSONFromUrl(String url, JSONObject params) { // Making HTTP request try { // defaultHttpClient // boolean status=isNetworkAvailable(); HttpParams param = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(param, 10000); HttpConnectionParams.setSoTimeout(param, 10000); DefaultHttpClient httpClient = new DefaultHttpClient(param); HttpPost httpPost = new HttpPost(url); StringEntity se = new StringEntity(params.toString()); se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, CONTENT_TYPE_JSON)); httpPost.setEntity(se); Log.d("URL Request: ", url.toString()); Log.d("JSON Params: ", params.toString()); HttpResponse httpResponse = httpClient.execute(httpPost); int code = httpResponse.getStatusLine().getStatusCode(); if (code != 200) { Log.d("HTTP response code is:", Integer.toString(code)); return null; } else { HttpEntity httpEntity = httpResponse.getEntity(); is = httpEntity.getContent(); } } catch (ConnectTimeoutException e) { // TODO: handle exception Log.e("Timeout Exception", e.toString()); return null; } catch (SocketTimeoutException e) { // TODO: handle exception Log.e("Socket Time out", e.toString()); return null; } catch (UnsupportedEncodingException e) { e.printStackTrace(); return null; } catch (ClientProtocolException e) { e.printStackTrace(); return null; } catch (IOException e) { e.printStackTrace(); return null; } try { BufferedReader reader = new BufferedReader(new InputStreamReader( is, "iso-8859-1"), 8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); jsonResp = sb.toString(); Log.d("Content: ", sb.toString()); } catch (Exception e) { Log.e("Buffer Error", "Error converting Response " + e.toString()); return null; } // try parse the string to a JSON object try { jObj = new JSONObject(jsonResp); } catch (JSONException e) { Log.e("JSON Parser", "Error parsing data " + e.toString()); } // return JSON Object return jObj; } public boolean isNetworkAvailable(Context context) { ConnectivityManager cm = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = cm.getActiveNetworkInfo(); if (networkInfo != null && networkInfo.isConnected()) { return true; } return false; }
Если $_POST['params']
– кодированная строка JSON, вам нужно только один раз вызвать json_decode
, а не несколько раз, которые вы json_decode
.
$decoded = json_decode($_POST['params'], true); // Decoded is now an array of the JSON data $email = $decoded['email']; $pass = $decoded['password'];
Следует отметить, что строка в вашем вопросе недействительна JSON, так как нужно также указывать адрес электронной почты и пароль.
Вы можете провести прямое тестирование функции json_decode здесь: http://php.fnlist.com/php/json_decode
Вы можете проверить свой JSON здесь: http://jsonlint.com