我正在尝试使用改造功能在服务器中调用api,但收到响应代码400错误的请求
我尝试将@Filed与@FormUrlEncoded一起使用,并尝试将@Part与@Multipart一起使用
并尝试发送用户名和电话作为hashMap
@FieldMap Map<String, String> options
与@FormUrlEncoded
而且即使我尝试将其发送为@Query
这是我的api类
@Multipart
@POST("api/users")
// @Headers({
// "Content-Type: application/json;charset=utf-8",
// "Accept: application/json;charset=utf-8",
// "Cache-Control: max-age=640000"})
Call<normalResponse> register(@Part("name")String name,@Part("mobile")String mobile);```
这是我的api clint
public static final String BASE_URL = "https://xxx-backend.herokuapp.com/";
public static Retrofit getClient(String baseUrl) {
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient okHttpClient = new OkHttpClient().newBuilder()
.connectTimeout(60, TimeUnit.SECONDS)
.readTimeout(60, TimeUnit.MINUTES)
.writeTimeout(60, TimeUnit.MINUTES)
.addInterceptor(logging)
.build();
Gson gson = new GsonBuilder()
.setLenient().setLenient()
.create();
return new Retrofit.
Builder()
.client(okHttpClient)
.baseUrl(baseUrl)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
}
}
这就是我的称呼
loading = ProgressDialog.show(LoginActivity.this, "loading ....", "... wait", false, false);
loading.setCancelable(false);
loading.setCanceledOnTouchOutside(false);
NetWorkApis netWorkApis = ApiClient.getClient(ApiClient.BASE_URL).create(NetWorkApis.class);
Map<String,String> hashMap=new HashMap<>();
hashMap.put("name",name);
hashMap.put("mobile",phone);
Call<normalResponse> settingResponseCall = netWorkApis.register(hashMap);
settingResponseCall.enqueue(new Callback<normalResponse>() {
@SuppressLint("LongLogTag")
@Override
public void onResponse(Call<normalResponse> call, Response<normalResponse> response) {
if (response.isSuccessful()) {
if (response.body().getError()){
Utility.showAlertDialog(getString(R.string.error), response.body().getMessage(), LoginActivity.this);
loading.dismiss();
}else {
addToPref("tt");
next.setText("Verify");
first.setVisibility(View.GONE);
second.setVisibility(View.VISIBLE);
topText.setText("I Still don't trust you.\nTell me something that only two of us know.");
loading.hide();
}
}else {
Log.i(TAG, response.errorBody().toString());
Utility.showAlertDialog(getString(R.string.error), getString(R.string.servererror), LoginActivity.this);
loading.hide();
}
}
@SuppressLint("LongLogTag")
@Override
public void onFailure(Call<normalResponse> call, Throwable t) {
Log.i(TAG, t.getLocalizedMessage());
loading.hide();
Utility.showAlertDialog(getString(R.string.error), getString(R.string.servererror), LoginActivity.this);
}
});
}
这是我的正常响应时间
public class normalResponse {
@SerializedName("Data")
@Expose
private String data;
@SerializedName("error")
@Expose
private Boolean error;
@SerializedName("message")
@Expose
private String message;
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public Boolean getError() {
return error;
}
public void setError(Boolean error) {
this.error = error;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}