2017-08-21 5 views
0

これは私の現在の仕事の基本プロジェクトです。 アンドロイドアプリケーションは正常に動作し、データをデータベースに送信しますが、エラー例外がスローされます。 画像A screenshot of my phone's screen

主な活動

package com.mytrendin.retrofitsenddata; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

import com.google.gson.Gson; 
import com.google.gson.GsonBuilder; 

import okhttp3.OkHttpClient; 
import retrofit2.Call; 
import retrofit2.Callback; 
import retrofit2.Response; 
import retrofit2.Retrofit; 

import retrofit2.converter.gson.GsonConverterFactory; 

public class MainActivity extends AppCompatActivity { 


    EditText name,email, password; 
    Button save; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     name= (EditText) findViewById(R.id.name); 
     email= (EditText) findViewById(R.id.email); 
     password= (EditText) findViewById(R.id.password); 
     save = (Button) findViewById(R.id.save); 
     save.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       OkHttpClient client = new OkHttpClient(); 
       Gson gson = new GsonBuilder() 
         .setLenient() 
         .create(); 

       Retrofit retrofit = new Retrofit.Builder() 
         .baseUrl("http://192.168.1.4") 
         .client(client) 
         .addConverterFactory(GsonConverterFactory.create(gson)) 
         .build(); 


       ApiService service = retrofit.create(ApiService.class); 
       Student student = new Student(); 
       student.setName(name.getText().toString()); 
       student.setEmail(email.getText().toString()); 
       student.setPassword(email.getText().toString()); 
       Call<Student> call = service.insertData(student.getName(),student.getEmail(),student.getPassword()); 

       call.enqueue(new Callback<Student>() { 
        @Override 
        public void onResponse(Call<Student> call, Response<Student> response) { 

         Toast.makeText(MainActivity.this, "response"+response, Toast.LENGTH_LONG).show(); 

         name.setText(""); 
         email.setText(""); 
         password.setText(""); 

        } 

        @Override 
        public void onFailure(Call<Student> call, Throwable t) { 


         Log.i("Hello",""+t); 
         Toast.makeText(MainActivity.this, "Throwable"+t, Toast.LENGTH_LONG).show(); 

        } 


       }); 
      } 
     }); 

    } 
} 

APIサービスクラス:

public interface ApiService { 

    @FormUrlEncoded 
    @POST("/test/index.php") 
    Call<Student> insertData(@Field("name") String name, @Field("email") String email , @Field("password") String password); 
} 

生徒のクラス::

public class Student { 

    String name, email, password; 


    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getEmail() { 
     return email; 
    } 

    public void setEmail(String email) { 
     this.email = email; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 
} 

とPHPサーバーサイドスクリプト。

$username = $_POST['name']; 
$useremail = $_POST['email']; 
$userpassword = $_POST['password']; 
$user = "root"; 
$pass = "[email protected]"; 
$host= "localhost"; 
$dbname="test"; 

$con = mysqli_connect($host,$user,$pass,$dbname); 
$sql="insert into userdata(name,email,password) values('".$username."','".$useremail."','".$userpassword."');"; 
if(mysqli_query($con,$sql)){ 
     echo "data inserted"; 

}else{ 
     echo "Failed"; 
} 
?> 

私が見つけた他の解決策は、手元の問題のために働いていません。どこが間違っていますか?

答えて

0

問題は、あなたがStringとしての応答を取得している挿入後に実際にあるが、あなたはそう

Call<Student> insertData(@Field("name") String name, @Field("email") String email , @Field("password") String password); 

私は "のgettinよ

Call<String> insertData(@Field("name") String name, @Field("email") String email , @Field("password") String password); 
+0

と交換Class Student

に代入されていますエラー:(55,56)エラー:互換性のない種類:を呼び出すと、というメッセージがIDE上で変換されません。修正。 – Gatibaru

+0

に変更すると、APIが呼び出されます – Anil

+0

コードを投稿できますか – Anil

関連する問題