Android 第2步:使用字符串请求发送POST请求

Android 第2步:使用字符串请求发送POST请求,android,retrofit2,Android,Retrofit2,您好,我是android新手,现在我正在使用改造来集成web服务 我不了解如何使用改装POST请求将参数发送到服务器 请帮帮我。谢谢 主要活动:- String url=“XXXXXXXXX/”; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); 改装改装=新建改装.Builder().baseUrl(url

您好,我是android新手,现在我正在使用改造来集成web服务

我不了解如何使用改装POST请求将参数发送到服务器

请帮帮我。谢谢

主要活动:-
String url=“XXXXXXXXX/”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
改装改装=新建改装.Builder().baseUrl(url)。
addConverterFactory(GsonConverterFactory.create()).build();
PostInterface服务=改装.create(PostInterface.class);
JSONObject JSONObject=新的JSONObject();
试一试{
jsonObject.put(“电子邮件”device3@gmail.com");
jsonObject.put(“密码”、“1234”);
}捕获(JSONException e){
e、 printStackTrace();
}
最终字符串结果=jsonObject.toString();
service.getStringScalar(result).enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
System.out.println(“结果是==>”+response.body());
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
System.out.println(“失效”);
}
});
}
界面后:-
公共接口后接口{
@POST(“用户/医生登录”)
调用getStringScalar(@Body-String-Body);
}
公共界面后界面{
@POST(“用户/医生登录”)
调用getStringScalar(@Field(“PARAMATER_ID”)字符串体);}

您也可以使用字符串代替jsonobject,但我建议使用json进行重新编译。“@Field(您的_参数)”是您使用此创建新模型类的方式:

public class Credentials {
    private String email;
    private String password;
    public Credentials(String email, String password) {
        this.email = email;
        this.password = password;
    }
}
然后修改您的界面:

public interface PostInterface {

    @POST("User/DoctorLogin")
    Call<String> getStringScalar(@Body Credentials body);
}
公共接口后接口{
@POST(“用户/医生登录”)
调用getStringScalar(@Body-Credentials-Body);
}
那么就这样称呼它:

service.getStringScalar(new Credentials("device3@gmail.com", "1234")).enqueue(new Callback<String>() {
        @Override
        public void onResponse(Call<String> call, Response<String> response) {

            System.out.println("result is====>" + response.body());
        }

        @Override
        public void onFailure(Call<String> call, Throwable t) {
            System.out.println("Failuere");
        }
    });
service.getStringScalar(新凭据(“device3@gmail.com“,”1234“)。排队(新回调(){
@凌驾
公共void onResponse(调用、响应){
System.out.println(“结果是==>”+response.body());
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
System.out.println(“失效”);
}
});
阅读此内容将帮助您理解改装。

创建一个模型类

public class Model {

String userName;
String password;

}
生成getter和setter

修改你的界面

public interface ApiInterface {
@FormUrlEncoded
@POST("User/DoctorLogin")
Call<Model> loadDetail(@Field("user_id") String user_id,
                       @Field("password") String password);
}
公共接口{
@FormUrlEncoded
@POST(“用户/医生登录”)
调用loadDetail(@Field(“user\u id”)字符串user\u id,
@字段(“密码”)字符串(密码);
}
这样称呼它

 Retrofit retrofit = new Retrofit.Builder()
                .addConverterFactory(GsonConverterFactory.create()).baseUrl(url)
            .build();

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

    Call<Model> call = service.loadDetail("username", "password");
    call.enqueue(new Callback<Model>() {
        @Override
        public void onResponse(Call<Model> call, Response<Model> response) {

            int statusCode = response.code();
            Model user = response.body();

            Log.d("userName: "  user.getUserName());
           Log.d("password: " + user.getPassword());
        }

        @Override
        public void onFailure(Call<Model> call, Throwable t) {
            Toast.makeText(getApplicationContext(), "data not found", Toast.LENGTH_SHORT).show();
        }
reformation-reformation=new-reformation.Builder()
.addConverterFactory(GsonConverterFactory.create()).baseUrl(url)
.build();
ApiInterface服务=改装.create(ApiInterface.class);
Call Call=service.loadDetail(“用户名”、“密码”);
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
int statusCode=response.code();
Model user=response.body();
Log.d(“用户名:”user.getUserName());
Log.d(“密码:+user.getPassword());
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
Toast.makeText(getApplicationContext(),“找不到数据”,Toast.LENGTH_SHORT.show();
}

这是什么的可能重复怎么能从我的mainActivity调用它?你正在使用call getStringScalar(@Body String Body);……正确的是call getStringScalar(@Field(“PARAMATER_ID”)String Body);……设置参数字段是关键,您使用的不是body OK,让我检查并告诉您结果我没有收到故障响应意味着调用故障
public class Model {

String userName;
String password;

}
public interface ApiInterface {
@FormUrlEncoded
@POST("User/DoctorLogin")
Call<Model> loadDetail(@Field("user_id") String user_id,
                       @Field("password") String password);
}
 Retrofit retrofit = new Retrofit.Builder()
                .addConverterFactory(GsonConverterFactory.create()).baseUrl(url)
            .build();

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

    Call<Model> call = service.loadDetail("username", "password");
    call.enqueue(new Callback<Model>() {
        @Override
        public void onResponse(Call<Model> call, Response<Model> response) {

            int statusCode = response.code();
            Model user = response.body();

            Log.d("userName: "  user.getUserName());
           Log.d("password: " + user.getPassword());
        }

        @Override
        public void onFailure(Call<Model> call, Throwable t) {
            Toast.makeText(getApplicationContext(), "data not found", Toast.LENGTH_SHORT).show();
        }