Не удалось отправить параметр в PHP POST параметр Android

В настоящее время я использую Android Volley и пытаюсь выбрать сведения о продукте, отправив идентификатор продукта, чтобы получить подробные данные о продукте.

JSONObject params = new JSONObject();
try {
params.put("ProductID", intent.getStringExtra("productID"));
} catch (JSONException e) {
e.printStackTrace();
}

JsonObjectRequest detailReq = new JsonObjectRequest(Request.Method.POST, url, params, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
txtNama.setText(intent.getStringExtra("nama"));
txtManufacturer.setText(intent.getStringExtra("namaVendor"));
txtHarga.setText("Rp. " + intent.getStringExtra("harga"));
try {
if(!response.getString("Foto1").equals(""))
fotoUrl.add(response.getString("Foto1"));
if(!response.getString("Foto2").equals(""))
fotoUrl.add(response.getString("Foto2"));
if(!response.getString("Foto3").equals(""))
fotoUrl.add(response.getString("Foto3"));
if(!response.getString("Foto4").equals(""))
fotoUrl.add(response.getString("Foto4"));
if(!response.getString("Foto5").equals(""))
fotoUrl.add(response.getString("Foto5"));
txtDesc.setText(response.getString("Deskripsi"));
} catch (JSONException e) {
e.printStackTrace();
}
imageFragmentPagerAdapter.notifyDataSetChanged();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(ProductActivity.this, "Error occurred! Please check your internet connection!", Toast.LENGTH_LONG).show();
}
});
AppController.getInstance().addToRequestQueue(detailReq);

Но метод onErrorResponse всегда вызывается. Это мой php код:

<?php

require("config.inc.php");

$query = "SELECT Foto1, Foto2, Foto3, Foto4, Foto5, Deskripsi
FROM `product` WHERE `ProductID` = '". $_POST['ProductID']."'";

try {
$stmt   = $db->prepare($query);
$result = $stmt->execute();
}
catch (PDOException $ex) {
die(json_encode($response));
}

$row = $stmt->fetch();
if ($row) {
echo json_encode($row);
}

?>

Но когда я изменяю значение $ _POST [‘ProductID’], например, на ‘0001’, php работает просто отлично. Любая идея? Заранее спасибо.

0

Решение

 void MakePostRequest() {
StringRequest postRequest = new StringRequest(Request.Method.POST, EndPoints.BASE_URL_ADS,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonResponse = new JSONObject(response);
value1= jsonResponse.getString("Your ID1");
value2= jsonResponse.getString("Your ID2");

} catch (JSONException e) {
e.printStackTrace();
banner_id = null;
full_id = null;
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
value1= null;
value2= null;
}
}
) {
// here is params will add to your url using post method
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<>();
params.put("app", getString(R.string.app_name));
//params.put("2ndParamName","valueoF2ndParam");
return params;
}
};
Volley.newRequestQueue(this).add(postRequest);
}

Этот пост-запрос использует этот компилятор com.mcxiaoke.volley:library:1.0.19 залповая версия.

Я просто добавляю имя приложения в качестве параметра. Вы можете добавить больше параметров.

Удачи

2

Другие решения

Вам лучше проверить вопрос отдельно для сервера и Android, как вы упоминали, иногда сервер работает хорошо.

Проверка сервера

  1. Ты можешь использовать Почтальон,проверить работоспособность сервера или состояние сервера. Особенно убедитесь, что ответ вашего сервера в стандартном формате Json. Если вы хотите сделать это проще, временно измените $_POST в $_GETи установите Chrome JSONView. Тогда проверьте это своим Chrome.
  2. Проверьте ProductID Формат в ваших базах данных. Если это textлучше сначала $product_id = $_POST['ProductID'], а затем использовать "$product_id"

Проверка Android

  1. Я настоятельно рекомендую использовать StringRequest вместо JsonObjectRequest, вручную конвертировать String в JSONObject, Если строка ответа не является JSONObject, вы можете распечатать ее и найти исключение.
  2. используйте приведенный ниже код для создания параметров JSONObject:

    Map<String, Object> paramsMap = new HashMap<>();
    paramsMap.put("ProductID", 3);
    JSONObject params = new JSONObject(paramsMap);

Надеюсь помочь вам.

1

Чтобы отладить больше, вы можете добавить в верхней части кода PHP следующий
var_dump ($ _ POST); умереть();

а затем посмотрите в андроиде, какие значения напечатаны, если вы ничего не получите, значит андроид не отправил запрос правильно.

0
По вопросам рекламы [email protected]