retrofit2 post异步请求
时间: 2023-12-06 14:38:49 浏览: 139
以下是使用Retrofit2进行POST异步请求的示例代码:
1.首先,在build.gradle文件中添加Retrofit2和Gson的依赖:
```gradle
dependencies {
// Retrofit2
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
'com.squareup.retrofit2:converter-gson:2.9.0'
// Gson
implementation 'com.google.code.gson:gson:2.8.6'
}
```
2.创建一个接口,用于定义POST请求的URL和参数:
```java
public interface PostRequest_Interface {
@POST("translate?doctype=json&jsonversion=&type=&keyfrom=&model=&mid=&imei=&vendor=&screen=&ssid=&network=&abtest=")
@FormUrlEncoded
Call<Translation1> getCall(@Field("i") String targetSentence);
}
```
3.创建一个实体类,用于接收服务器返回的JSON数据:
```java
public class Translation1 {
private int errorCode;
private String query;
private List<String> translation;
// 省略getter和setter方法
}
```
4.在Activity中发起POST异步请求:
```java
public class MainActivity extends AppCompatActivity {
private TextView mTvResult;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTvResult = findViewById(R.id.tv_result);
// 创建Retrofit对象
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://fanyi.youdao.com/")
.addConverterFactory(GsonConverterFactory.create())
.build();
// 创建网络请求接口实例
PostRequest_Interface request = retrofit.create(PostRequest_Interface.class);
// 发起POST异步请求
Call<Translation1> call = request.getCall("hello");
call.enqueue(new Callback<Translation1>() {
@Override
public void onResponse(Call<Translation1> call, Response<Translation1> response) {
Translation1 translation = response.body();
if (translation != null) {
mTvResult.setText(translation.getTranslation().get(0));
}
}
@Override
public void onFailure(Call<Translation1> call, Throwable t) {
mTvResult.setText("请求失败:" + t.getMessage());
}
});
}
}
```
在上述代码中,我们首先创建了一个Retrofit对象,并指定了请求的基础URL和Gson转换器。然后,我们创建了一个网络请求接口实例,并调用其中的getCall()方法发起POST异步请求。最后,我们在回调方法中处理服务器返回的数据。
阅读全文