私のAndroidアプリケーションでは、私は改造を使ってAPIコールを作成しようとしています。私は改造を使用してユーザー登録を実行したい。問題は、api呼び出しが実行され、デバッガもonResponse()
になりますが、私のAPIは応答メッセージを 'Request method not accepted'として返します。私は郵便配達員とチェックしたが、それは適切に機能する。郵便配達員では、フォームデータとして値を渡しています。この問題を解決するために私を助けてください。ここに私のコードは次のとおりです。Retrofit-アンドロイド:リクエストメソッドが受け入れられません
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
);
}
活動
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'
}
私が間違っているつもりですどこを教えてください。
ここにデバイスログを入力してください –
あなたのAPIはGETメソッドのみを受け入れるかもしれません。 –
いいえ、POSTメソッドを受け入れます。私は郵便配達員のPOSTメソッドで同じapiを実行しました。それは完全に動作します。 – zanky