Я бы хотел использовать залп для публикации данных.
Это мой php-скрипт:
<?php header('Content-Type: application/json; charset=utf-8'); /* * Following code will update a product information * A product is identified by product id (pid) */ // array for JSON response $response = array(); // check for required fields if (isset($_POST['quotes_id']) && isset($_POST['quote']) && isset($_POST['uid']) && isset($_POST['imageName']) && isset($_POST['nameOfCreator']) ) { $quotes_id = $_POST['quotes_id']; $quote = $_POST['quote']; $uid = $_POST['uid']; $imageName = $_POST['imageName']; $nameOfCreator = $_POST['nameOfCreator']; // include db connect class require_once __DIR__ . '/db_connect.php'; // connecting to db $db = new DB_CONNECT(); // mysql update row with matched pid $result = mysql_query("INSERT INTO quotes SET quote = '$quote', uid = '$uid', imageName = '$imageName', nameOfCreator = '$nameOfCreator'"); // check if row inserted or not if ($result) { // successfully updated $response["success"] = 1; $response["message"] = "Product successfully updated."; // echoing JSON response echo json_encode($response); } else { } } else { // required field is missing $response["success"] = 0; $response["message"] = "Required field(s) is missing"; // echoing JSON response echo json_encode($response); } ?>
и следующий мой метод, который я вызывал нажатием кнопки:
private void setData() { Map<String, String> jsonParams = new HashMap<String, String>(); jsonParams.put(StaticVariables.QUOTES_ID, null); jsonParams.put(StaticVariables.QUOTE, "ööö"); jsonParams.put(StaticVariables.UID, "112"); jsonParams.put(StaticVariables.IMAGE_NAME, "112v1.jpg"); jsonParams.put("nameOfCreator", "aa"); JsonObjectRequest myRequest = new JsonObjectRequest( Request.Method.POST, StaticVariables.url_insert_quote, new JSONObject(jsonParams), new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { // verificationSuccess(response); Log.e("JA", "nice"); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // verificationFailed(error); } }) { @Override public Map<String, String> getHeaders() throws AuthFailureError { HashMap<String, String> headers = new HashMap<String, String>(); headers.put("Content-Type", "application/json; charset=utf-8"); headers.put("User-agent", "My useragent"); return headers; } }; AppController.getInstance().addToRequestQueue(myRequest, "tag"); }
Но никакая строка не будет вставлена в мою базу данных mysql. Кроме того, я установил INTERNET PERMISSION и все, что необходимо для подключения к Интернету.
Попробуйте этот код, который он работал для меня в приложении Android, и вам нужно использовать другой URL для публикации:
private void registerUser(){ final String username = editTextUsername.getText().toString().trim(); final String password = editTextPassword.getText().toString().trim(); StringRequest stringRequest = new StringRequest(Request.Method.POST, REGISTER_URL, new Response.Listener<String>() { @Override public void onResponse(String response) { //do stuffs with response of post } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { //do stuffs with response erroe } }){ @Override protected Map<String,String> getParams(){ Map<String,String> params = new HashMap<String, String>(); params.put(KEY_PASSWORD,password); params.put(KEY_EMAIL, email); return params; } }; RequestQueue requestQueue = Volley.newRequestQueue(this); requestQueue.add(stringRequest); }
Я не уверен в вашем php-коде, но над частью Android работает,
вы можете знать, что вы должны,
Добавить разрешение для Интернета:
<uses-permission android:name="android.permission.INTERNET" />
Добавить залп для сборки.gradle:
compile 'com.mcxiaoke.volley:library:1.0.19'
благодаря