android - Android Volley onResponse 功能未运行
问题描述
这是我从https://developer.android.com/training/volley/request#java填写的函数
String url = "http://192.168.1.31:8000/api/social/convert-token";
JSONObject jsonBody = new JSONObject();
try{
jsonBody.put("grant_type", "convert_token");
jsonBody.put("client_id", clientID);
jsonBody.put("client_secret",clientSecret);
jsonBody.put("backend", "facebook");
jsonBody.put("token", facebookAccessToken);
jsonBody.put("user_type", userType);
}catch (JSONException e){
e.printStackTrace();;
}
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest
(Request.Method.POST, url, jsonBody, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
//Execute Code
Log.d("LOGIN TO SERVER", response.toString());
// Save server token to local DB
SharedPreferences.Editor editor = sharedPreferences.edit();
try {
editor.putString("token", response.getString("access_token"));
}catch (JSONException e){
e.printStackTrace();
}
editor.commit();
//Start home activity
startActivity(new Intent(Login.this,Home.class));
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// TODO: Handle error
}
});
字符串 URL 是我的 Django 服务器,它工作正常,我可以从 android 手机上的网络浏览器访问它。
下一个块只是将我之前获得的数据转换为 JSON 格式。我通过复制和粘贴 URL 以及 Postman 中的每个参数对此进行了测试,它可以正常工作并返回 JSON。
然后将 jsonBody 与 URL 一起传递到 Json 请求中。Log.d“登录到服务器”在我的日志中不可见。所以我知道 onResponse 没有运行。此外,我在 onErrorResponse 中放置了一条日志行,它在我的日志中可见。
所以 onReponse 不会运行,而 onError 响应会运行。我不知道错误是什么。
解决方案
三种情况,
- 使用 getHeaders() 检查是否有任何标题要传递。
2.由于是http而不是https,所以在manifest里面提供android:usesCleartextTraffic="true"。它还允许您访问 http url。
3.你说你在 Response.onErrorListener(){} 中保留了记录器,错误是什么。如果不给它 Log.d("Error", "Error getting "+error.toString);
推荐阅读
- excel - 从 PowerShell 函数返回对 Excel 工作表的引用
- powershell - Powershell Get-Service 详解Windows Service的“DESCRIPTION”
- java - Java多线程连接问题
- python - “元组”对象在池中不可调用。在 Python 中应用多处理
- macos - 在 MacOS Catalina 上,当我尝试从终端选择代码时,如何关闭黄色突出显示和弹出“查找”窗口?
- php - 自定义 Woocommerce 跟踪表
- azure - 合并两个 Application Insights 资源时出现未知函数应用
- node.js - 当我浏览不同的页面 Socket.io 时会建立新的连接
- c++ - GLM 围绕原点和对象本身旋转对象
- css - 如何使用 CSS 作为 Vuetify v-tab 的道具?