gpt4 book ai didi

android - 入队 onResponse 方法在 android 改造中返回空的 response.body()

转载 作者:行者123 更新时间:2023-11-30 05:10:38 26 4
gpt4 key购买 nike

当我调用我的 API 之一时,onRespone 方法返回空 response.body()。我以前多次遵循这种方式并且它有效,但在这种情况下不起作用。此 api 也适用于浏览器。

我检查了所有的东西:SerializedName 标签,从 Serializable 实现所有类,我正在使用的 api 方法,...。我也尝试使用同步调用,但它不起作用。

请注意我是如何从回调中获取 response.body() 值的:我将一个变量声明为 Activity 类字段并将 response.body() 分配给它。

我真的很困惑。有什么想法吗??

这些都是您需要的代码:

Activity :

package com.example.amirmasoud.mgtools_2.activity;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;

import com.example.amirmasoud.mgtools_2.GetDataService;
import com.example.amirmasoud.mgtools_2.R;
import com.example.amirmasoud.mgtools_2.RetrofitInstance;
import com.example.amirmasoud.mgtools_2.model.ToolsItem;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

public class ToolContentActivity extends AppCompatActivity {

private GetDataService service = RetrofitInstance.getRetrofitInstance().create(GetDataService.class);
private ToolsItem toolItem = new ToolsItem();
private int toolsItemId = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tool_content);

Bundle bundle = new Bundle(getIntent().getExtras());
toolsItemId = bundle.getInt("toolItemId");

service.getToolItemContent(toolsItemId).enqueue(new Callback<ToolsItem>() {
@Override
public void onResponse(Call<ToolsItem> call, Response<ToolsItem> response) {
toolItem.mConstructor(response.body());
}

@Override
public void onFailure(Call<ToolsItem> call, Throwable t) {
Toast.makeText(getApplicationContext(), t.getMessage(), Toast.LENGTH_LONG).show();
}
});
}
}

型号:

package com.example.amirmasoud.mgtools_2.model;

import com.google.gson.annotations.SerializedName;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
* Created by AmirMasoud on 12/9/2018.
*/

public class ToolsItem implements Serializable {

@SerializedName("MainTypeID")
private int mainTypeID = 0;

@SerializedName("Name")
private String persianName = "";

@SerializedName("ImageURL")
private String imageURL = "";

@SerializedName("EnglishName")
private String englishName = "";

@SerializedName("OtherName")
private String otherName = "";

@SerializedName("CountryID")
private int countryID = 0;

@SerializedName("Year")
private int year = 0;

@SerializedName("ComplexityName")
private String complexityName = "";

@SerializedName("RelatedMainTypeID")
private List<Integer> relatedMainTypeID = new ArrayList<>();

@SerializedName("IntroductionDescription")
private String introductionDescription = "";

@SerializedName("Pros")
private String pros = "";

@SerializedName("Cons")
private String cons = "";

@SerializedName("RequiredTime")
private int requiredTime = 0;

@SerializedName("RequiredEmployee")
private int requiredEmployee = 0;

@SerializedName("RequiredBudget")
private int requiredBudget = 0;

@SerializedName("RequiredKnowledge")
private int requiredKnowledge = 0;

@SerializedName("Applications")
private String applications = "";

@SerializedName("ComplementaryContent")
private List<CompContentToolItem> complementaryContent = new ArrayList<>();

public ToolsItem mConstructor(ToolsItem item) {
this.mainTypeID = item.getMainTypeID();
this.persianName = item.getPersianName();
this.englishName= item.getEnglishName();
this.imageURL = item.getImageURL();
this.otherName = item.getOtherName();
this.countryID = item.getCountryID();
this.year = item.getYear();
this.complexityName = item.getComplexityName();
this.relatedMainTypeID = item.getRelatedMainTypeID();
this.introductionDescription = item.getIntroductionDescription();
this.pros = item.getPros();
this.cons = item.getCons();
this.requiredTime = item.getRequiredTime();
this.requiredBudget = item.getRequiredBudget();
this.requiredEmployee = item.getRequiredEmployee();
this.requiredKnowledge = item.getRequiredKnowledge();
this.applications = item.getApplications();
this.complementaryContent = item.getComplementaryContent();
return this;
}

public String getEnglishName() {
return englishName;
}

public void setEnglishName(String englishName) {
this.englishName = englishName;
}

public String getOtherName() {
return otherName;
}

public void setOtherName(String otherName) {
this.otherName = otherName;
}

public int getCountryID() {
return countryID;
}

public void setCountryID(int countryID) {
this.countryID = countryID;
}

public int getYear() {
return year;
}

public void setYear(int year) {
this.year = year;
}

public String getComplexityName() {
return complexityName;
}

public void setComplexityName(String complexityName) {
this.complexityName = complexityName;
}

public List<Integer> getRelatedMainTypeID() {
return relatedMainTypeID;
}

public void setRelatedMainTypeID(List<Integer> relatedMainTypeID) {
this.relatedMainTypeID = relatedMainTypeID;
}

public String getIntroductionDescription() {
return introductionDescription;
}

public void setIntroductionDescription(String introductionDescription) {
this.introductionDescription = introductionDescription;
}

public String getPros() {
return pros;
}

public void setPros(String pros) {
this.pros = pros;
}

public String getCons() {
return cons;
}

public void setCons(String cons) {
this.cons = cons;
}

public int getRequiredTime() {
return requiredTime;
}

public void setRequiredTime(int requiredTime) {
this.requiredTime = requiredTime;
}

public int getRequiredEmployee() {
return requiredEmployee;
}

public void setRequiredEmployee(int requiredEmployee) {
this.requiredEmployee = requiredEmployee;
}

public int getRequiredBudget() {
return requiredBudget;
}

public void setRequiredBudget(int requiredBudget) {
this.requiredBudget = requiredBudget;
}

public int getRequiredKnowledge() {
return requiredKnowledge;
}

public void setRequiredKnowledge(int requiredKnowledge) {
this.requiredKnowledge = requiredKnowledge;
}

public String getApplications() {
return applications;
}

public void setApplications(String applications) {
this.applications = applications;
}

public List<CompContentToolItem> getComplementaryContent() {
return complementaryContent;
}

public void setComplementaryContent(List<CompContentToolItem> complementaryContent) {
this.complementaryContent = complementaryContent;
}

public int getMainTypeID() {
return mainTypeID;
}

public void setMainTypeID(int mainTypeID) {
this.mainTypeID = mainTypeID;
}

public String getPersianName() {
return persianName;
}

public void setPersianName(String persianName) {
this.persianName = persianName;
}

public String getImageURL() {
return imageURL;
}

public void setImageURL(String imageURL) {
this.imageURL = imageURL;
}
}

子模型:

package com.example.amirmasoud.mgtools_2.model;

import com.google.gson.annotations.SerializedName;

import java.io.Serializable;

/**
* Created by AmirMasoud on 12/12/2018.
*/

public class CompContentToolItem implements Serializable {

@SerializedName("FileURL")
private String fileURL;

@SerializedName("Description")
private String description;

public String getFileURL() {
return fileURL;
}

public void setFileURL(String fileURL) {
this.fileURL = fileURL;
}

public String getDescription() {
return description;
}

public void setDescription(String description) {
this.description = description;
}
}

服务:

public interface GetDataService {

@GET("GetMainTypeByID")
Call<ToolsItem> getToolItemContent(@Query("MainTypeID") int toolItemId);

}

改造实例:

public class RetrofitInstance {
private static final String BASE_URL = "https://assess.ir/service.svc/";
private static Retrofit retrofit;

public static Retrofit getRetrofitInstance() {
if (retrofit == null) {
retrofit = new retrofit2.Retrofit.Builder()
.baseUrl(BASE_URL)
.client(UnsafeOkHttpClient.getUnsafeOkHttpClient())
.addConverterFactory(GsonConverterFactory.create(new GsonBuilder().setLenient().create()))
.build();
}
return retrofit;
}
}

最佳答案

首先你必须使用 GSON 转换成 json 让我给你看一个例子

 service.getToolItemContent(toolsItemId).enqueue(new Callback<ToolsItem>() {
@Override
public void onResponse(Call<ToolsItem> call, Response<ToolsItem> response) {
Gson gson = new Gson();
String data = gson.toJson(response.body)
ToolsItem toolsItem = gson.fromJson(data,ToolsItem.class);
toolItem.mConstructor(response.body());
}

@Override
public void onFailure(Call<ToolsItem> call, Throwable t) {
Toast.makeText(getApplicationContext(), t.getMessage(), Toast.LENGTH_LONG).show();
}
});

关于android - 入队 onResponse 方法在 android 改造中返回空的 response.body(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53816406/

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