Retrofit进行post提交json数据

Posted gali

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Retrofit进行post提交json数据相关的知识,希望对你有一定的参考价值。

1:先看一看xutils3的提交代码

    
      String account = editText1.getText().toString(); String password = editText2.getText().toString(); JSONObject js_request = new JSONObject();//服务器需要传参的json对象 try { js_request.put("account", account);//添加相应键值对 js_request.put("password", password); } catch (JSONException e) { e.printStackTrace(); } RequestParams requestParams = new RequestParams(LOGIN_URL); requestParams.setAsJsonContent(true); requestParams.setBodyContent(js_request.toString()); x.http().post(requestParams, new Callback.CommonCallback<String>() { @Override public void onSuccess(String result) { System.out.println("**ok"+result); try { JSONObject object = new JSONObject(result); String code = object.getString("code"); if (code.equals("1")) { // button.setClickable(false); //登录成功后获得id } else { // 登陆失败 } } catch (Exception e) { e.printStackTrace(); } } @Override public void onError(Throwable ex, boolean isOnCallback) { System.out.println("errot"); } @Override public void onCancelled(CancelledException cex) { } @Override public void onFinished() { } }); }

   2:Retrofit提交过程

  2.1 登陆 urL 

  public static String LOGIN_URL = "http://114.xx.xxx.xx:8088/vdyweb/ws/rest/Login";

  

 interface APIStore {
@Headers({"Content-Type: application/json","Accept: application/json"})//需要添加头 @POST ("vdyweb/ws/rest/Login") Call<ResponseBody>getMessage(@Body RequestBody info); // 请求体味RequestBody 类型
} 

 

public class Info {
    String account;
    String password;

    public Info(String account, String password) {
        this.account = account;
        this.password = password;
    }
}

 

public class MainActivity extends AppCompatActivity {
public static String BASE_LOGIN_URL = "http://114.xx.xxx.xx:8088/"; Retrofit retrofit; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Info info=new Info("test","123456");
  /*** 利用Gson 将对象转json字符串*/ Gson gson=new Gson(); String obj=gson.toJson(info); retrofit=new Retrofit.Builder().baseUrl(BASE_LOGIN_URL).build(); RequestBody body=RequestBody.create(okhttp3.MediaType.parse("application/json; charset=utf-8"),obj); final APIStore login = retrofit.create(APIStore.class); retrofit2.Call<ResponseBody> data = login.getMessage(body); data.enqueue(new Callback<ResponseBody>() { @Override public void onResponse(retrofit2.Call<ResponseBody> call, Response<ResponseBody> response) { Log.d(TAG, "onResponse: --ok--"+response.body()); try { Log.d(TAG, "onResponse: --ok--"+response.body().string()); } catch (IOException e) { e.printStackTrace(); } } @Override public void onFailure(retrofit2.Call<ResponseBody> call, Throwable t) { Log.d(TAG, "onResponse: --err--"+t.toString()); } });
} }

3:添加get请求

  apiStore加

    @GET("vdyweb/ws/rest/device/getOwnerDevice/2/2/20")
    Call<ResponseBody>getMessage2();

  

 retrofit2.Call<ResponseBody>data1=login.getMessage2();
        data1.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                try {
                    Log.d(TAG, "onResponse: --ok--"+response.body().string());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            @Override
            public void onFailure(Call<ResponseBody> call, Throwable t) {

            }
        });

  

  

 

 

 

 






以上是关于Retrofit进行post提交json数据的主要内容,如果未能解决你的问题,请参考以下文章

Retrofit初探——POST方式提交JSON数据

Retrofit 使用过程中遇到的坑

Retrofit提交Json

使用 Retrofit 发送 POST 请求并接收 Json 响应无法使用响应数据我需要将其传递给另一个活动

如何在 Android 中使用 Retrofit 发送 JSON POST 请求,并接收字符串响应

尝试处理通过 POST 方法接收的 JSON 数组 (Retrofit2)