Java移动端应用调用JSONplaceholder接口返回null求助
以下是针对你遇到问题的具体排查和解决步骤:
检查网络权限与明文流量设置
如果你开发的是Android应用,必须在AndroidManifest.xml中添加网络权限:<uses-permission android:name="android.permission.INTERNET" />若你的应用目标是Android 9(API 28)及以上,由于默认禁止明文HTTP流量,而JSONPlaceholder支持HTTPS,建议直接使用
https://jsonplaceholder.typicode.com作为请求域名;若仍需使用HTTP,需在<application>标签中添加:android:usesCleartextTraffic="true"确保请求地址与调用方式正确
确认请求的接口地址无误,例如使用JSONPlaceholder的示例接口:https://jsonplaceholder.typicode.com/posts/1。同时注意:Android主线程不允许直接执行网络请求,必须使用异步方式:
以OkHttp为例,使用异步回调而非同步执行:OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://jsonplaceholder.typicode.com/posts/1") .build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { e.printStackTrace(); // 打印错误堆栈,定位失败原因 } @Override public void onResponse(Call call, Response response) throws IOException { if (response.isSuccessful()) { String responseBody = response.body().string(); // 处理响应内容 } else { int statusCode = response.code(); // 处理错误状态码 } } });捕获并打印异常信息
无论使用OkHttp还是HttpURLConnection,都要捕获所有IOException并打印完整堆栈信息,这是定位问题最直接的方式——null响应往往是请求根本没成功发起,异常信息会告诉你是连接超时、DNS解析失败还是其他网络问题。排查网络环境
尝试切换手机流量(而非WiFi)测试,排除WiFi代理、局域网限制导致的连接失败问题。
从你提供的截图来看,代码存在在主线程执行网络请求的问题(Android 3.0+主线程禁止网络操作),这会直接导致请求失败,进而出现响应码或响应体为null的情况。
内容的提问来源于stack exchange,提问作者Evgen Polivanov

