Ich bin ein Anfänger in Android und PHP und ich versuche, meine Android-App zu einem Wamp-Datenbankserver zu verbindenIch bekomme die JSON-codierten Daten mit anderen Daten als Antwort von der Datenbank auf meine Android-App
ich folge diesen Kurs hier http://www.androidhive.info/2012/05/how-to-connect-android-with-php-mysql/
Die Idee, einen PHP-Code wird unter Verwendung von Operationen grundlegende SQL
ich habe und Tätigkeit auszuführen, die einen Produktnamen nimmt, Preis und eine Beschreibung und Speichern Sie es in der Datenbank, indem Sie JSON-codierte Daten zurückgeben mit den Informationen über, wenn das Einfügen erfolgreich war oder nicht
Aber ich habe einen Fehler ein JSONObject aus ihm
zu schaffen versucht, so ist hier, was habe ich versucht,
Log.e("JSON",json);
verwendete ich ein Protokoll sehen, was die Daten und hier ist das, was ich bekam
05-26 15:25:56.164 7801-7886/products.android.com.connectingproducts E/JSON: <br />
<font size='1'><table class='xdebug-error xe-deprecated' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>(!)</span> Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\wamp64\www\android_connect\db_connect.php on line <i>28</i></th></tr>
<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0007</td><td bgcolor='#eeeeec' align='right'>241312</td><td bgcolor='#eeeeec'>{main}()</td><td title='C:\wamp64\www\android_connect\create_product.php' bgcolor='#eeeeec'>...\create_product.php<b>:</b>0</td></tr>
<tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>0.0012</td><td bgcolor='#eeeeec' align='right'>252032</td><td bgcolor='#eeeeec'>DB_CONNECT->__construct()</td><td title='C:\wamp64\www\android_connect\create_product.php' bgcolor='#eeeeec'>...\create_product.php<b>:</b>22</td></tr>
<tr><td bgcolor='#eeeeec' align='center'>3</td><td bgcolor='#eeeeec' align='center'>0.0012</td><td bgcolor='#eeeeec' align='right'>252120</td><td bgcolor='#eeeeec'>DB_CONNECT->connect()</td><td title='C:\wamp64\www\android_connect\db_connect.php' bgcolor='#eeeeec'>...\db_connect.php<b>:</b>11</td></tr>
<tr><td bgcolor='#eeeeec' align='center'>4</td><td bgcolor='#eeeeec' align='center'>0.0016</td><td bgcolor='#eeeeec' align='right'>252936</td><td bgcolor='#eeeeec'><a href='http://www.php.net/function.mysql-connect' target='_new'>mysql_connect</a>
()</td><td title='C:\wamp64\www\android_connect\db_connect.php' bgcolor='#eeeeec'>...\db_connect.php<b>:</b>28</td></tr>
</table></font>
{"success":1,"message":"Product successfully created."}
die Daten haben einige hTML-Stil-Code zu haben scheint, und am Ende hat es die Botschaft, die ich wan t:
{"success":1,"message":"Product successfully created."}
so hier ist mein JSONParser-Code
package products.android.com.connectingproducts;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;
import android.util.Log;
public class JSONParser {
static InputStream is = null;
static JSONObject jObj;
static String json = "";
// constructor
public JSONParser() {
}
// function get json from url
// by making HTTP POST or GET mehtod
public JSONObject makeHttpRequest(String url, String method,
List<NameValuePair> params) {
// Making HTTP request
try {
// check for request method
if(method.equals("POST")){
// request method is POST
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(params));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
}else if(method.equals("GET")){
// request method is GET
DefaultHttpClient httpClient = new DefaultHttpClient();
String paramString = URLEncodedUtils.format(params, "utf-8");
url += "?" + paramString;
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
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();
json = sb.toString();
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}
Log.e("JSON",json);
// try parse the string to a JSON object
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
// return JSON String
return jObj;
}
}
und hier ist meine PHP-Datei
<?php
/*
* Following code will create a new product row
* All product details are read from HTTP Post Request
*/
// array for JSON response
$response = array();
// check for required fields
if (isset($_POST['name']) && isset($_POST['price']) && isset($_POST['description'])) {
$name = $_POST['name'];
$price = $_POST['price'];
$description = $_POST['description'];
// include db connect class
require_once __DIR__ . '/db_connect.php';
// connecting to db
$db = new DB_CONNECT();
// mysql inserting a new row
$result = mysql_query("INSERT INTO products(name, price, description) VALUES('$name', '$price', '$description')");
// check if row inserted or not
if ($result) {
// successfully inserted into database
$response["success"] = 1;
$response["message"] = "Product successfully created.";
// echoing JSON response
echo json_encode($response);
} else {
// failed to insert row
$response["success"] = 0;
$response["message"] = "Oops! An error occurred.";
// echoing JSON response
echo json_encode($response);
}
} else {
// required field is missing
$response["success"] = 0;
$response["message"] = "Required field(s) is missing";
// echoing JSON response
echo json_encode($response);
}
?>
bitte helfen Sie, wenn Sie wissen, warum diese Daten an die json hinzugefügt werden codierte Daten
Dank
Ihr PHP enthält Warnungen, entweder beheben Sie sie oder deaktivieren Sie die Fehlermeldung. Bitte beachten Sie, dass 'mysql_ *' aus Sicherheitsgründen nicht mehr als 'PHP7' gilt. Es wird empfohlen, zu 'mysqli_ *' oder 'PDO' Erweiterungen zu wechseln. –
Es scheint, dass Ihr Debugger XDebug diese Zeilen hinzufügt, weil Sie eine veraltete Verbindung zur Datenbank verwenden: 'Veraltet: mysql_connect(): Die Erweiterung mysql ist veraltet und wird in Zukunft entfernt: Verwenden Sie stattdessen mysqli oder PDO in C : \ wamp64 \ www \ android_connect \ db_connect.php in Zeile 28' –
Trotz anderer Möglichkeiten, hier können Sie mit PDO beginnen: http://php.net/manual/es/pdo.connections.php –