android - 如何使用 Android Volley 从发布请求中检索数据
问题描述
我正在申请存款和取款,因为我已经向 API 提供了参数,我可以获得响应,但我想获得数组内某些元素的干净结果:
{
"user": {
"id": "3",
"first_name": "jef",
"last_name": "handani",
"email": "jeffryhandani@gmail.com",
"verify_status": "1",
"Store_name": "7 eleven",
"Store_City": "Kuala Lumpur",
"Store_Region": "Kuala Lumpur",
"Store_address": "Jalan Bukit Jalil",
"Latitudes": "5.9668083",
"Longtitudes": "13.0338011",
"created_by": null,
"qr_code": "307",
"first_login": "1"
},
"total_amount": "220.00",
"total_fee": "20.00",
"amount": "200",
"method": "Express Exchange / Local bank transfer"
}
所以我需要从响应中获取total_amount、total_fee、amount和method。
在下面的代码中,我只需要获取上面提到的数据,任何人都可以帮助我:
private void depositVerify(){
StringRequest request = new StringRequest(Request.Method.POST, URLstring, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
TextView resp = findViewById(R.id.serverResp);
resp.setText(response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
EditText amount = findViewById(R.id.editamount);
Map<String, String> param = new HashMap<>();
param.put("api_key", getApi_key());
param.put("user_key", getUser_key());
param.put("currency", "debit_base");
param.put("amount", amount.getText().toString());
param.put("method", "local_bank");
return param;
}
};
Volley.newRequestQueue(depositAlert1.this).add(request);
}
解决方案
Step-1:在库下面集成。
implementation 'com.google.code.gson:gson:2.8.5'
第二步:复制到 POJO 类下面。
public class Example {
@SerializedName("user")
@Expose
private User user;
@SerializedName("total_amount")
@Expose
private String totalAmount;
@SerializedName("total_fee")
@Expose
private String totalFee;
@SerializedName("amount")
@Expose
private String amount;
@SerializedName("method")
@Expose
private String method;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String getTotalAmount() {
return totalAmount;
}
public void setTotalAmount(String totalAmount) {
this.totalAmount = totalAmount;
}
public String getTotalFee() {
return totalFee;
}
public void setTotalFee(String totalFee) {
this.totalFee = totalFee;
}
public String getAmount() {
return amount;
}
public void setAmount(String amount) {
this.amount = amount;
}
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method;
}
public class User {
@SerializedName("id")
@Expose
private String id;
@SerializedName("first_name")
@Expose
private String firstName;
@SerializedName("last_name")
@Expose
private String lastName;
@SerializedName("email")
@Expose
private String email;
@SerializedName("verify_status")
@Expose
private String verifyStatus;
@SerializedName("Store_name")
@Expose
private String storeName;
@SerializedName("Store_City")
@Expose
private String storeCity;
@SerializedName("Store_Region")
@Expose
private String storeRegion;
@SerializedName("Store_address")
@Expose
private String storeAddress;
@SerializedName("Latitudes")
@Expose
private String latitudes;
@SerializedName("Longtitudes")
@Expose
private String longtitudes;
@SerializedName("created_by")
@Expose
private Object createdBy;
@SerializedName("qr_code")
@Expose
private String qrCode;
@SerializedName("first_login")
@Expose
private String firstLogin;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getVerifyStatus() {
return verifyStatus;
}
public void setVerifyStatus(String verifyStatus) {
this.verifyStatus = verifyStatus;
}
public String getStoreName() {
return storeName;
}
public void setStoreName(String storeName) {
this.storeName = storeName;
}
public String getStoreCity() {
return storeCity;
}
public void setStoreCity(String storeCity) {
this.storeCity = storeCity;
}
public String getStoreRegion() {
return storeRegion;
}
public void setStoreRegion(String storeRegion) {
this.storeRegion = storeRegion;
}
public String getStoreAddress() {
return storeAddress;
}
public void setStoreAddress(String storeAddress) {
this.storeAddress = storeAddress;
}
public String getLatitudes() {
return latitudes;
}
public void setLatitudes(String latitudes) {
this.latitudes = latitudes;
}
public String getLongtitudes() {
return longtitudes;
}
public void setLongtitudes(String longtitudes) {
this.longtitudes = longtitudes;
}
public Object getCreatedBy() {
return createdBy;
}
public void setCreatedBy(Object createdBy) {
this.createdBy = createdBy;
}
public String getQrCode() {
return qrCode;
}
public void setQrCode(String qrCode) {
this.qrCode = qrCode;
}
public String getFirstLogin() {
return firstLogin;
}
public void setFirstLogin(String firstLogin) {
this.firstLogin = firstLogin;
}
}
}
第 3 步:解析响应。
private void depositVerify(){
StringRequest request = new StringRequest(Request.Method.POST, URLstring, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Example example = new Gson().fromJson(response,Example.class);
String total_amount = example.getTotalAmount();
String total_fee = example.getTotalFee();
String amount = example.getAmount();
String method = example.getMethod();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
EditText amount = findViewById(R.id.editamount);
Map<String, String> param = new HashMap<>();
param.put("api_key", getApi_key());
param.put("user_key", getUser_key());
param.put("currency", "debit_base");
param.put("amount", amount.getText().toString());
param.put("method", "local_bank");
return param;
}
};
Volley.newRequestQueue(depositAlert1.this).add(request);
}
推荐阅读
- rest - Rest api vs sqoop
- typescript - 按键访问时返回类型化对象属性
- c# - 在编译时循环遍历类中的所有对象 C#
- grails - 如何在 Grails 中使用自定义身份验证过滤器?
- regex - 如果单词以给定的后缀结尾,则替换所有出现的字母
- php - 插入电源后,PHP SESSION 在 iPad 上死机。铬应用
- java - 在 Ubuntu 中执行 Jmeter 脚本,遇到错误
- javascript - 当我们不知道数据的嵌套级别时,如何在 react/redux 的 reducer 状态属性中更新数据?
- android - firebase 数据库更改时向应用程序用户(android)推送通知?
- qt - 如何不在控制台上打印 Qt 内部消息?