Я пытаюсь опубликовать некоторые данные для бэкенда в моем приложении, используя модификацию.Я попробовал метод, чтобы сделать это, но данные не публикуются, вместо этого он показывает ошибку Somw. Ниже приведены мои следующие классы:
1) Интерфейс ApiService
public interface ApiService {
@FormUrlEncoded
@POST("/enquiry.php")
Call<InsertData> insertFood(@Field("id")String id,@Field("Recipient_Email") String Recipient_Email, @Field("Subject") String Subject, @Field("Message") String Message);
}
2) InsertData.java
public class InsertData {
@SerializedName("id")
private String id;
@SerializedName("Recipient_email")
private String Recipient_email;
@SerializedName("Subject")
private String Subject;
@SerializedName("Message")
private String Message;
public InsertData(String id, String Recipient_email, String Subject, String Message) {
this.id = id;
this.Recipient_email = Recipient_email;
this.Subject = Subject;
this.Message = Message;
}
public InsertData() {
}
public void setId(String id) {
this.id = id;
}
public void setRecipient_email(String Recipient_email) {
this.Recipient_email = Recipient_email;
}
public void setSubject(String Subject){
this.Subject = Subject;
}
public void setMessage(String Message){
this.Message=Message;
}
}
3) MainActivity.java
public class MainActivity extends AppCompatActivity {
private Button btnInsert;
private ProgressDialog progressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnInsert = (Button) findViewById(R.id.savebtn_id);
progressDialog = new ProgressDialog(this);
progressDialog.setTitle("Inserting");
progressDialog.setMessage("Please wait ....");
final EditText etRecipient = (EditText) findViewById(R.id.recipient_id);
final EditText etSubject = (EditText) findViewById(R.id.subject_id);
final EditText etMessage = (EditText)findViewById(R.id.message_id);
final EditText etid = (EditText)findViewById(R.id.id2);
btnInsert.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
progressDialog.show();
String id= etid.getText().toString();
String Recipient_Email = etRecipient.getText().toString();
String Subject = etSubject.getText().toString();
String Message = etMessage.getText().toString();
insertData(id,Recipient_Email,Subject,Message);
}
});
}
/**
* this method used to send data to server or our local server
* @param id
* @param Recipient_Email
* @param Subject
* @param Message
*/
private void insertData(String id, String Recipient_Email, String Subject, String Message){
ApiService apiService = ApiClient.getClient().create(ApiService.class);
Call<InsertData> call = apiService.insertFood(id,Recipient_Email, Subject,Message);
call.enqueue(new Callback<InsertData>() {
@Override
public void onResponse(Call<InsertData> call, Response<InsertData> response) {
InsertData insertData = response.body();
progressDialog.dismiss();
Toast.makeText(MainActivity.this,"GONE :"+response.body().toString() , Toast.LENGTH_LONG).show();
}
@Override
public void onFailure(Call<InsertData> call, Throwable t) {
Toast.makeText(MainActivity.this, t.getMessage(), Toast.LENGTH_SHORT).show();
progressDialog.dismiss();
}
});
}
}
Я не могу понять, что я делаю неправильно.Мой метод onResponse в MainActivity показывает следующий ответ TOAST:
GONE: Ответ (протокол = h2, код = 404, сообщение =, URL = здесь, показывая мой URL)
и данные не публикуются в бэкэнде.Любая помощь будет высоко оценена.
Спасибо.
Правки,
1) ApiClient.java
public class ApiClient {
public static final String URL="https://pksinghhps.000webhostapp.com/asserts/";
public static Retrofit RETROFIT = null;
public static Retrofit getClient(){
if(RETROFIT==null){
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(new LoggingInterceptor())
.build();
RETROFIT = new Retrofit.Builder()
.baseUrl(URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return RETROFIT;
}
}
2) enquiry.php
<?PHP
include("connection.php");
if(isset($_POST['id']) && isset($_POST['Recipient_email']) &&
isset($_POST['Subject']) && isset($_POST['Message']))
{
$id=$_POST["id"];
$Recipient_email=$_POST["Recipient_email"];
$Subject=$_POST["Subject"];
$Message=$_POST["Message"];
$result = mysqli_query($conn, "SELECT id FROM enquiries WHERE color =
'".$id."'");
if(mysqli_num_rows($result) > 0)
{
echo "id exist";
exit;
}
else
{
$query="INSERT INTO
enquiries(id,Recipient_email,Subject,Message)
VALUES('$id','$Recipient_email','$Subject','$Message')";
$data=mysqli_query($conn,$query);
if($data)
{
echo "Successfully data sent";
}
else
{
echo "Error in sending data";
}
exit;
}
}
?>