Retrofit2使用post发送json字符串

导入包

implementation 'com.squareup.retrofit2:retrofit:2.5.0'
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'

加入网络权限


嗯。。第二个忘了是不是必须加的了,偷个懒先不测试了嘻嘻

接口 HttpService

import okhttp3.RequestBody;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.Headers;
import retrofit2.http.POST;

public interface HttpService {
    //个人推测,retrofit2在找到这个接口时,自动把这个当成接口地址的根目录,且以/结尾
    String BASE_URL = "http://xxx/xxx/xxx/";

    @Headers({
        "version:1.11"
    })
    @POST("captcha")
    Call getResultCallback(@Body RequestBody body);
}
@Headers里放服务器需要的参数,若只有一个参数可以使用@Headers("version:1.11"),多个参数的话用{}给括起来,逗号隔开。
@POST必须加,且括号里放接口最后的地址,和BSER_URL拼接成完整的接口地址。

调用代码

HttpService service = new Retrofit
                            .Builder()
                            .baseUrl(HttpService.BASE_URL)
                            .addConverterFactory(GsonConverterFactory.create())
                            .build()
                            .create(HttpService.class);
//json字符串,为了偷懒先手动写个,真实情况要使用JSON工具类转换成json字符串
String body = "{\"mobile\": \"12312312312\"}";
        
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), body);
service.getResultCallback(requestBody).enqueue(new Callback() {
    @Override
    public void onResponse(Call call, Response response) {
        ResultCallbackReply reply = response.body();
        System.out.println("成功");
        System.out.println("oo-" + response.toString());
    }
    @Override
    public void onFailure(Call call, Throwable t) {
        System.out.println("失败");
    }
});

在res下新建xml文件夹,新建network_security_config.xml,加入代码:

  



    

在AndroidManifest.xml的application节点下加入

android:networkSecurityConfig="@xml/network_security_config"

Retrofit2使用post发送json字符串_第1张图片

开跑吧

 

你可能感兴趣的:(android,studio,android,json)