Я пытаюсь разработать программу, которая позволяет отправлять объект JSON на сервер, а затем читать объект, чтобы сохранить данные в базе данных, но я не могу этого достичь. Вот мой код, не могли бы вы сказать мне, где я иду не так и как я мог это исправить?
Вот мой APIService
:
@POST("testingjson.php")
Call<Result> confirmOrder(
@Body JSONObject productCart
);
Здесь Result
учебный класс:
public class Result {
private JSONObject cartProducts;
public JSONObject getCartProducts() {
return cartProducts;
}
public void setCartProducts(JSONObject cartProducts) {
this.cartProducts = cartProducts;
}
}
И, наконец, это вызов службы на clicklistener
кнопки:
Gson gson = new GsonBuilder().setLenient().create();
Retrofit retrofit = new Retrofit.Builder().baseUrl(APIUrl.BASE_URL).addConverterFactory(GsonConverterFactory.create(gson)).build();
APIService service = retrofit.create(APIService.class);
Call<Result> call=service.confirmOrder(Cart);
call.enqueue(new Callback<Result>() {
@Override
public void onResponse(Call<Result> call, Response<Result> response) {
Toast.makeText(getApplicationContext(),"OrderPlaced",Toast.LENGTH_LONG).show();
}
@Override
public void onFailure(Call<Result> call, Throwable t) {
Toast.makeText(getApplicationContext(),t.toString(),Toast.LENGTH_LONG).show();
}
});
А вот код PHP, куда он отправляется для хранения элементов в базе данных на сервере:
<?php
$password="";
$user="root";
$database="shadowpets";
$host="localhost";
$con = mysqli_connect($host,$user,$password,$database) or die('Unable to Connect');
if($_SERVER["REQUEST_METHOD"]=="POST") {
$jsonData=file_get_contents("php://input");
$jsonString=json_decode($jsonData,true);
try {
foreach($jsonString['Order Summary'] as $cart) {
$name=$cart['ProductName'];
$price=$cart['ProductPrice'];
$quantity=$cart['ProductQuantity'];
$cost=$cart['ProductCost'];
$seller=$cart['SellerId'];
$stmt=$con->prepare("INSERT INTO sProducts(Name,Price,Quantity,Cost,Sellerid)VALUES(?,?,?,?,?)");
$stmt->bind_param("sssss",$name,$price,$quantity,$cost,$seller);
$stmt->execute();
}
$res['result']="data inserted";
} catch(Exception $ex) {
$res['result']=$ex;
}
print_r (json_encode($res));
}
?>
При запуске приложения я получаю следующую ошибку:
com.google.gson.JsonSyntaxException: java.lang.illlegalStateException: ожидаемый BEGIN_OBJECT, но был строкой в строке 1, путь 1, столбец $
Может кто-нибудь сказать мне, где я иду не так, и как я могу исправить ошибку?
Задача ещё не решена.
Других решений пока нет …