Dans mon application android, j'essaie d'utiliser retrofit pour faire des appels api. Je veux effectuer l'enregistrement de l'utilisateur en utilisant le rétrofit. Le problème est que l'appel api est exécuté et le débogueur passe également à onResponse()
, mais mon API renvoie le message de réponse en tant que "Méthode de requête non acceptée". J'ai vérifié avec le facteur, cela fonctionne correctement. en postier, je passe des valeurs en forme-données. aidez-moi s'il vous plaît à résoudre ce problème. voici mon code:Rénovation- Android: méthode de demande non acceptée
public interface RegisterAPI {
@FormUrlEncoded
@POST("Register.php")
Call<RegisterPojo> insertUser(
@Field("username") String username,
@Field("email") String email,
@Field("password") String password,
@Field("c_password") String c_password
);
}
Activité
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
RegisterAPI service = retrofit.create(RegisterAPI.class);
Call<RegisterPojo> call = service.insertUser(
edtUname.getText().toString(), edtEmail.getText().toString(),
edtPassword.getText().toString(), edtConfirmPassword.getText().toString());
call.enqueue(new Callback<RegisterPojo>() {
@Override
public void onResponse(Call<RegisterPojo> call, Response<RegisterPojo> response) {
if (response.body() != null) {
//HERE IT SHOWS "Request method not accepted"
Log.e("msg", response.body().getMsg());
Toast.makeText(mContext, response.body().getMsg(), Toast.LENGTH_LONG).show();
}
}
@Override
public void onFailure(Call<RegisterPojo> call, Throwable t) {
Log.e("msg", "Failed");
}
});
RegisterPojo
public class RegisterPojo {
@SerializedName("status")
@Expose
private Integer status;
@SerializedName("msg")
@Expose
private String msg;
@SerializedName("id")
@Expose
private String id;
@SerializedName("email")
@Expose
private String email;
@SerializedName("username")
@Expose
private String username;
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 24
buildToolsVersion "24.0.2"
defaultConfig {
applicationId "app.sample"
minSdkVersion 15
targetSdkVersion 24
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:24.2.0'
testCompile 'junit:junit:4.12'
compile 'com.github.aakira:expandable-layout:[email protected]'
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
// compile 'com.squareup.retrofit2:converter-scalars:2.1.0'
compile 'com.squareup.okhttp3:okhttp:3.4.1'
compile 'com.google.code.gson:gson:2.7'
}
s'il vous plaît me dire où je me trompe.
journal dispositif mis ici –
votre api peut accepter la méthode GET uniquement. –
Non, il accepte la méthode POST. J'ai exécuté même api avec la méthode POST dans le facteur. ça fonctionne parfaitement avec ça. – zanky