我想在Retrofit中使用JSON数据调用POST方法(REST API)。 Postman和Volley库运作良好,我想在Retrofit中实现它。
我最近两天都在调查它,没有得到任何解决方案.. 我已经提到了this link和this link以及更多看似相似但不适合我的东西......我可能会做错事......
public class Api {
private static Retrofit retrofit = null;
public static ApiInterface getClient() {
if (retrofit==null) {
retrofit = new Retrofit.Builder()
.baseUrl("xxxx/Service1.svc/")
.addConverterFactory(GsonConverterFactory.create())
.build();
}
//Creating object for our interface
ApiInterface api = retrofit.create(ApiInterface.class);
return api; // return the APIInterface object
}}
和界面为
public interface ApiInterface {
@FormUrlEncoded
@POST("UserLogin")
Call<SignUpResponse> registration(@Field("Mobile_no") String mobile,
@Field("Password") String pass,
@Field("RegID") String regId);}
并将Pojo类更新为
public class SignUpResponse {
@SerializedName("UserLoginResult")
@Expose
private UserLoginResult userLoginResult;
public UserLoginResult getUserLoginResult() {
return userLoginResult;
}
public void setUserLoginResult(UserLoginResult userLoginResult) {
this.userLoginResult = userLoginResult;
}}class UserLoginResult {
@SerializedName("Email_id")
@Expose
private String emailId;
@SerializedName("First_name")
@Expose
private String firstName;
@SerializedName("Last_name")
@Expose
private String lastName;
@SerializedName("Message")
@Expose
private String message;
@SerializedName("Mobile_no")
@Expose
private String mobileNo;
@SerializedName("Password")
@Expose
private String password;
@SerializedName("RegID")
@Expose
private String regID;
@SerializedName("Status")
@Expose
private String status;
public String getEmailId() {
return emailId;
}
public void setEmailId(String emailId) {
this.emailId = emailId;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getMobileNo() {
return mobileNo;
}
public void setMobileNo(String mobileNo) {
this.mobileNo = mobileNo;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRegID() {
return regID;
}
public void setRegID(String regID) {
this.regID = regID;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}}
和MainActivity
Api.getClient().registration("xxxNumberhere","rd","222").enqueue(new Callback<SignUpResponse>() {
@Override
public void onResponse(Call<SignUpResponse> call, Response<SignUpResponse> response) {
signUpResponsesData = response.body();
Toast.makeText(getApplicationContext(), response.body().getUserLoginResult().getMessage(), Toast.LENGTH_SHORT).show();
progressDialog.dismiss();
}
@Override
public void onFailure(Call<SignUpResponse> call, Throwable t) {
Log.d("response", t.getStackTrace().toString());
progressDialog.dismiss();
}
});
我的依赖是
compile 'com.squareup.retrofit2:retrofit:2.1.0'
// JSON Parsing
compile 'com.google.code.gson:gson:2.6.1'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
提前致谢..
答案 0 :(得分:1)
以下课程名称和功能与我的项目相关
您可以通过
完成df_total=df_total[(df_total.Donor_Age == donor_age)]
然后你可以发送数据,
public interface APIService {
@POST("seq/restapi/checkpassword")
@Headers({
"Content-Type: application/json;charset=utf-8",
"Accept: application/json;charset=utf-8",
"Cache-Control: max-age=640000"
})
Call<Post> savePost(@Body User user);
}
您可以解析 User user = new User();
user.setUsername("abcd");
user.setPassword("password");
public void sendPost(User user) {
mAPIService.savePost(user).enqueue(new Callback<Post>() {
@Override public void onResponse(Call<Post> call, Response<Post> response) {
if (response.isSuccessful()) { }
}
@Override public void onFailure(Call<Post> call, Throwable t) { }
});
}
by,
error 400
并添加RetrofitError类,
Gson gson = new GsonBuilder().create();
RetrofitError mError = gson.fromJson(response.errorBody().string(), RetrofitError.class);
Toast.makeText(context, mError.getMessages().getError().get(0).getMessage(),Toast.LENGTH_LONG).show();
如果您有任何疑问,请参阅。快乐的编码...如果有的话,随意问。 注意:添加POJO
public class RetrofitError {
@SerializedName("messages")
@Expose
private Messages messages;
public Messages getMessages() {
return messages;
}
public void setMessages(Messages messages) {
this.messages = messages;
}
}
-------- UserLoginResult import com.google.gson.annotations.Expose; import com.google.gson.annotations.SerializedName;
public class Example {
@SerializedName("UserLoginResult")
@Expose
private UserLoginResult userLoginResult;
public UserLoginResult getUserLoginResult() {
return userLoginResult;
}
public void setUserLoginResult(UserLoginResult userLoginResult) {
this.userLoginResult = userLoginResult;
}
}
答案 1 :(得分:0)
感谢您的帮助@Subin Babu
1)添加了与参数
同名的POJO类public class User {
public String getMobile_no() {
return Mobile_no;
}
public void setMobile_no(String mobile_no) {
Mobile_no = mobile_no;
}
public String getPassword() {
return Password;
}
public void setPassword(String password) {
Password = password;
}
public String getRegID() {
return RegID;
}
public void setRegID(String regID) {
RegID = regID;
}
private String Mobile_no;
private String Password;
private String RegID;
public User(String Mobile_no,String Password,String RegID)
{
this.Mobile_no = Mobile_no;
this.Password = Password;
this.RegID = RegID;
}}
2)将ApiInterface类更新为
public interface ApiInterface {
@POST("UserLogin")
Call<SignUpResponse> registration(@Body User body);
}
3)将MainActivity类更新为
User user = new User("xxxNumber", "rd", "555");
Api.getClient().registration(user).enqueue(new Callback<SignUpResponse>() {
@Override
public void onResponse(Call<SignUpResponse> call, Response<SignUpResponse> response) {
signUpResponsesData = response.body();
}
@Override
public void onFailure(Call<SignUpResponse> call, Throwable t) {
}
});
4)所有其他都保持不变..