我需要在链接中获取json对象
http://link/json
和我的json评论
{"as":"AS48159 Telecommunication Infrastructure Company","city":"Ahvāz","country":"Iran","countryCode":"IR","isp":"Information Technology Company (ITC)","lat":31.3167,"lon":48.6844,"org":"khouzestan Telecommunication co","query":"2.185.10.22","region":"","regionName":"Khuzestan","status":"success","timezone":"Asia/Tehran","zip":""}
但是我在activitymain.java中出错
Incompatible types.
Required:
retrofit2.Call
<ir.hmotamed.myipnet.Queryip>
Found:
ir.hmotamed.myipnet.Queryip
我推荐(Queryip.java)
public class Queryip {
@SerializedName("status")
private String status;
@SerializedName("query")
private String query;
@SerializedName("country")
private String country;
@SerializedName("countryCode")
private String countryCode;
@SerializedName("city")
private String city;
@SerializedName("timezone")
private String timezone;
@SerializedName("isp")
private String isp;
我的界面(ApiService.java)
import retrofit2.Call;
import retrofit2.http.GET;
public interface ApiService {
@GET("json")
Call<Queryip> getQueryip();
}
和mu activitymain.java其
public class ActivityMain extends AppCompatActivity {
Call<Queryip> queryip;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ApiService service=ApiClient.getClient().create(ApiService.class);
Call<Queryip> call=service.getQueryip();
call.enqueue(new Callback<Queryip>() {
@Override
public void onResponse(Call<Queryip> Call, Response<Queryip> response) {
queryip=response.body(); // this line show error
Toast.makeText(ActivityMain.this, "ok", Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(Call<Queryip> Call, Throwable t) {
Toast.makeText(ActivityMain.this, "error", Toast.LENGTH_SHORT).show();
}
});
我需要修复错误的帮助,并获取显示文本视图的对象 坦克为您提供帮助!
答案 0 :(得分:1)
response.body();
可以强制转换为您的POJO类,即Queryip
您将其分配给参考 Call 类。这就是这里的问题
尝试:
Queryip q = (Queryip)response.body()
答案 1 :(得分:0)
问题是您创建呼叫对象
只需创建以下对象
Queryip queryip
和onSuccess
queryip=response.body();
答案 2 :(得分:0)
这是您的代码段错误的地方。
您的全局声明变量queryip
的类型为Call<Queryip>
:
Call<Queryip> queryip;
现在,在api响应中,您尝试将queryip
分配给response.body()
,这就是为什么会出错的原因。
response.body()
将返回类型为Queryip
的对象,但您的变量的类型为Call<Queryip>
。
因此,只需从以下位置重构变量声明即可:
Call<Queryip> queryip;
到
Queryip queryip;
就这样。
答案 3 :(得分:0)
仅需在activitymain.java中将全局对象类型从Call更改为Queryip。 然后在onResponse中: 您可以访问queryip = response.body();