gpt4 book ai didi

android - 在 Retrofit 2 中即使请求成功也获得 Null 响应

转载 作者:行者123 更新时间:2023-11-30 00:45:37 24 4
gpt4 key购买 nike

我在 Retrofit 2 的响应主体中得到 null。而在主体中我有有效数据。

 //using retrofit
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
httpClient.addInterceptor(logging);

Retrofit adapter = new Retrofit.Builder()
.baseUrl(Config.CUSTOMER_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(httpClient.build())
.build();
RegisterCustomer api = adapter.create(RegisterCustomer.class);
Call<Model> call = api.registerCustomer(custName.getText().toString() , phoneNumber.getText().toString(), address.getText().toString(), "abc");
call.enqueue(new Callback<Model>() {
@Override
public void onResponse(Call<Model> call, retrofit2.Response<Model> response) {
if(response.isSuccessful())
{
Log.d("CallBack",response.body().getCustId()+"###"+response.body().getCustUri()+response.code());
}

}

@Override
public void onFailure(Call<Model> call, Throwable t) {
Log.d("CallBack","error saving customer"+t.getMessage());

}
});

我的界面。

  public interface RegisterCustomer
{
@FormUrlEncoded
@POST("customer")
Call<Model> registerCustomer(
@Field("cust_name") String cust_name,
@Field("phone") String phone,
@Field("address") String address,
@Field("apikey") String apikey
// Callback<Response> callback
);
}

我的日志如下:

01-25 12:52:26.139 12163-12525/com.lab.yourhomebasket D/OkHttp: --> POST http://192.168.0.101/grocery_api/customer http/1.1
01-25 12:52:26.139 12163-12525/com.lab.yourhomebasket D/OkHttp: Content-Type: application/x-www-form-urlencoded
01-25 12:52:26.142 12163-12525/com.lab.yourhomebasket D/OkHttp: Content-Length: 57
01-25 12:52:26.142 12163-12525/com.lab.yourhomebasket D/OkHttp: cust_name=deep&phone=6656455465&address=bhdjih&apikey=abc
01-25 12:52:26.142 12163-12525/com.lab.yourhomebasket D/OkHttp: --> END POST (57-byte body)
01-25 12:52:26.529 12163-12525/com.lab.yourhomebasket D/OkHttp: <-- 201 Created http://192.168.0.101/grocery_api/customer (386ms)
01-25 12:52:26.529 12163-12525/com.lab.yourhomebasket D/OkHttp: Date: Wed, 25 Jan 2017 07:22:29 GMT
01-25 12:52:26.529 12163-12525/com.lab.yourhomebasket D/OkHttp: Server: Apache/2.4.18 (Win32) OpenSSL/1.0.2e PHP/7.0.4
01-25 12:52:26.529 12163-12525/com.lab.yourhomebasket D/OkHttp: X-Powered-By: PHP/7.0.4
01-25 12:52:26.529 12163-12525/com.lab.yourhomebasket D/OkHttp: Content-Length: 42
01-25 12:52:26.529 12163-12525/com.lab.yourhomebasket D/OkHttp: Keep-Alive: timeout=5, max=100
01-25 12:52:26.529 12163-12525/com.lab.yourhomebasket D/OkHttp: Connection: Keep-Alive
01-25 12:52:26.529 12163-12525/com.lab.yourhomebasket D/OkHttp: Content-Type: application/json;charset=utf-8
01-25 12:52:26.529 12163-12525/com.lab.yourhomebasket D/OkHttp: {"cust_id":18,"cust_uri":"\/customer\/18"}
01-25 12:52:26.529 12163-12525/com.lab.yourhomebasket D/OkHttp: <-- END HTTP (42-byte body)
01-25 12:52:26.533 12163-12163/com.lab.yourhomebasket D/CallBack: null###null201

我的有效响应是 {"cust_id":18,"cust_uri":"/customer/18"} 我得到 null###null201 数据也成功保存在服务器上。

模型.java

           import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.HashMap;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"cust_id",
"cust_uri"
})
public class Model {

@JsonProperty("cust_id")
private Integer custId;
@JsonProperty("cust_uri")
private String custUri;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();

@JsonProperty("cust_id")
public Integer getCustId() {
return custId;
}

@JsonProperty("cust_id")
public void setCustId(Integer custId) {
this.custId = custId;
}

@JsonProperty("cust_uri")
public String getCustUri() {
return custUri;
}

@JsonProperty("cust_uri")
public void setCustUri(String custUri) {
this.custUri = custUri;
}

@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}

@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}

}

谢谢迪帕克

最佳答案

请检查您的 Model.java 是否应该如下所示。

public class Model {

@SerializedName("cust_id")
@Expose
private Integer custId;
@SerializedName("cust_uri")
@Expose
private String custUri;

public Integer getCustId() {
return custId;
}

public void setCustId(Integer custId) {
this.custId = custId;
}

public String getCustUri() {
return custUri;
}

public void setCustUri(String custUri) {
this.custUri = custUri;
}

}

关于android - 在 Retrofit 2 中即使请求成功也获得 Null 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41845740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com