使用Retrofit2在POST请求中发送JSON

我正在使用Retrofit集成我的Web服务,但我不明白如何使用POST请求将JSON对象发送到服务器。我目前陷入困境,这是我的代码:

回答:

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Retrofit retrofit = new Retrofit.Builder().baseUrl(url).

addConverterFactory(GsonConverterFactory.create()).build();

PostInterface service = retrofit.create(PostInterface.class);

JSONObject jsonObject = new JSONObject();

try {

jsonObject.put("email", "device3@gmail.com");

jsonObject.put("password", "1234");

} catch (JSONException e) {

e.printStackTrace();

}

final String result = jsonObject.toString();

}

回答:

public interface PostInterface {

@POST("User/DoctorLogin")

Call<String> getStringScalar(@Body String body);

}

回答:

{

"email":"device3@gmail.com",

"password":"1234"

}

回答:

{

"error": false,

"message": "User Login Successfully",

"doctorid": 42,

"active": true

}

回答:

在gradle中使用这些

compile 'com.squareup.retrofit2:retrofit:2.3.0'

compile 'com.squareup.retrofit2:converter-gson:2.3.0'

compile 'com.squareup.retrofit2:converter-scalars:2.3.0'

使用这两个POJO类........

LoginData.class

public class LoginData {

private String email;

private String password;

public LoginData(String email, String password) {

this.email = email;

this.password = password;

}

/**

*

* @return

* The email

*/

public String getEmail() {

return email;

}

/**

*

* @param email

* The email

*/

public void setEmail(String email) {

this.email = email;

}

/**

*

* @return

* The password

*/

public String getPassword() {

return password;

}

/**

*

* @param password

* The password

*/

public void setPassword(String password) {

this.password = password;

}

}

LoginResult.class

public class LoginResult {

private Boolean error;

private String message;

private Integer doctorid;

private Boolean active;

/**

*

* @return

* The error

*/

public Boolean getError() {

return error;

}

/**

*

* @param error

* The error

*/

public void setError(Boolean error) {

this.error = error;

}

/**

*

* @return

* The message

*/

public String getMessage() {

return message;

}

/**

*

* @param message

* The message

*/

public void setMessage(String message) {

this.message = message;

}

/**

*

* @return

* The doctorid

*/

public Integer getDoctorid() {

return doctorid;

}

/**

*

* @param doctorid

* The doctorid

*/

public void setDoctorid(Integer doctorid) {

this.doctorid = doctorid;

}

/**

*

* @return

* The active

*/

public Boolean getActive() {

return active;

}

/**

*

* @param active

* The active

*/

public void setActive(Boolean active) {

this.active = active;

}

}

像这样使用API

public interface RetrofitInterface {

@POST("User/DoctorLogin")

Call<LoginResult> getStringScalar(@Body LoginData body);

}

使用这样的呼叫....

Retrofit retrofit = new Retrofit.Builder()

.baseUrl("Your domain URL here")

.addConverterFactory(ScalarsConverterFactory.create())

.addConverterFactory(GsonConverterFactory.create())

.build();

RetrofitInterface service = retrofit.create(RetrofitInterface .class);

Call<LoginResult> call=service.getStringScalar(new LoginData(email,password));

call.enqueue(new Callback<LoginResult>() {

@Override

public void onResponse(Call<LoginResult> call, Response<LoginResult> response) {

//response.body() have your LoginResult fields and methods (example you have to access error then try like this response.body().getError() )

}

@Override

public void onFailure(Call<LoginResult> call, Throwable t) {

//for getting error in network put here Toast, so get the error on network

}

});

把它放在success().... 里面

if(response.body().getError()){

Toast.makeText(getBaseContext(),response.body().getMessage(),Toast.LENGTH_SHORT).show();

}else {

//response.body() have your LoginResult fields and methods (example you have to access error then try like this response.body().getError() )

String msg = response.body().getMessage();

int docId = response.body().getDoctorid();

boolean error = response.body().getError();

boolean activie = response.body().getActive()();

}

注意:-始终使用POJO类,它会在改造中删除JSON数据解析。

以上是 使用Retrofit2在POST请求中发送JSON 的全部内容, 来源链接: utcz.com/qa/430226.html

回到顶部