为了账号安全,请及时绑定邮箱和手机立即绑定

无法在Android中使用retrofit2获取JSON数据

无法在Android中使用retrofit2获取JSON数据

POPMUISE 2019-04-27 19:15:46
我是Android的新手。我尝试使用retrofit2在android中获取json数据,它显示“连接超时”并且不显示任何内容。相同的代码如果我正在使用其他一些休息api它工作正常。请帮我解决这个问题。先感谢您。这是我的MainActivity.java类:import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.Toast;import java.util.List;import java.util.concurrent.TimeUnit;import okhttp3.OkHttpClient;import retrofit2.Call;import retrofit2.Callback;import retrofit2.Response;import retrofit2.Retrofit;import retrofit2.converter.gson.GsonConverterFactory;public class MainActivity extends AppCompatActivity {    ListView listView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        listView = (ListView) findViewById(R.id.listViewHeroes);        getUsers();    }    public void getUsers(){        Retrofit retrofit = new Retrofit.Builder()                .baseUrl(Api.BASE_URL)                .addConverterFactory(GsonConverterFactory.create()) //Here we are using the GsonConverterFactory to directly convert json data to object                .build();        Api api = retrofit.create(Api.class);        System.out.println("api:"+api);        Call<List<User>> call = api.getUsers();        Log.i("inside main","method..");        call.enqueue(new Callback<List<User>>() {如果需要更多细节,请随时询问。谢谢。
查看完整描述

3 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

由于发生连接超时,无法完成网络改造。

您似乎在localhost上运行API。确保您在同一网络上,正确的系统IP地址和端口号是正确的。

尝试使用移动设备中使用的相同URL在机器浏览器上调用webservice。检查响应是否可行。


查看完整回答
反对 回复 2019-05-15
?
繁星coding

TA贡献1797条经验 获得超4个赞

可能是您的服务器或本地主机返回数据,您可以通过增加超时时间来检查它

这是一个kotlin代码

okhttp客户端

 val okHttpClientBuilder = OkHttpClient.Builder()
                .addInterceptor(ChuckInterceptor(application))
                .addInterceptor(AppVersionInterceptor())
                .connectTimeout(1, TimeUnit.MINUTES)
                .readTimeout(1, TimeUnit.MINUTES)
                .writeTimeout(1, TimeUnit.MINUTES)


查看完整回答
反对 回复 2019-05-15
  • 3 回答
  • 0 关注
  • 959 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号