Я хочу отправить форму на сервер с Retrofit, но я получил ошибку.
Используйте JsonReader.setLenient (true), чтобы принять искаженный JSON в строке 1, путь 1, столбец $.
Я пытался исправить это, как показано ниже:
Gson gson = new GsonBuilder()
.setLenient()
.create();
return new Retrofit.Builder()
.baseUrl(AppConfig.BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
, тогда у меня есть эта ошибка:
Ожидается BEGIN_OBJECT, но в строке 1 путь 1 столбца 1 $
Myphp файл:
<?php
if($_SERVER['REQUEST_METHOD']=='POST') {
$jenis = $_POST['jenis'];
$tipe = $_POST['tipe'];
$nominal = $_POST['nominal'];
require_once("connect.php");
$sql = "INSERT INTO keuangan (jenis, tipe, nominal) VALUES('$jenis','$tipe','$nominal')";
if(mysqli_query($conn,$sql)) {
$response["value"] = 1;
$response["message"] = "Laporan Berhasil Ditambahkan";
echo json_encode($response);
}
else {
$response["value"] = 0;
$response["message"] = "ERROR! | Laporan Gagal Ditambahkan";
echo json_encode($response);
}
mysqli_close($conn);
}
else {
$response["value"] = 0;
$response["message"] = "ERROR, OUT OF METHOD";
echo json_encode($response);
}
Мой интерфейс API:
public interface RegisterAPI {
@FormUrlEncoded
@POST("insert.php")
Call<Value> daftar (
@Field("jenis") String jenis,
@Field("tipe") String tipe,
@Field("nominal") String nominal
);
}
Моя модель:
public class Value {
String value;
String message;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
Моя активность:
@OnClick(R.id.btn_Daftar) void daftar() {
//membuat progress dialog
progress = new ProgressDialog(this);
progress.setCancelable(false);
progress.setMessage("Loading ...");
progress.show();
//mengambil data dari edittext
String jenis = et_jenis.getText().toString();
String tipe = et_tipe.getText().toString();
String nominal = et_nominal.getText().toString();
int selectedId = radioGroup.getCheckedRadioButtonId();
radioSexButton = (RadioButton) findViewById(selectedId);
String sesi = radioSexButton.getText().toString();
// ==FIRST ERROR==
// Retrofit retrofit = new Retrofit().Builder()
// .baseUrl(URL)
// .addConverterFactory(GsonConverterFactory.create())
// .build();
// ==SECOND ERROR==
Gson gson = new GsonBuilder()
.setLenient()
.create();
retrofit = new Retrofit.Builder()
.baseUrl(URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
RegisterAPI api = retrofit.create(RegisterAPI.class);
Call<Value> call = api.daftar(jenis, tipe, nominal);
call.enqueue(new Callback<Value>() {
@Override
public void onResponse(Call<Value> call, Response<Value> response) {
String value = response.body().getValue();
String message = response.body().getMessage();
progress.dismiss();
if (value.equals("1")) {
Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<Value> call, Throwable t) {
progress.dismiss();
String message = t.getLocalizedMessage();
Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show();
}
});
}
Каждыйпредложение будет очень полезно. Спасибо