Android koush/ion lib 无法发布和接收 JSON 响应

2023-12-13

我使用 ION 来 GET/POST 进行 REST,并将图像放入 ListView 但我无法使用 POST 方法并接收 JSON 形式的响应 我使用的ION版本是1.3.7。在模拟器以及真实设备 4.1.1、4.2.2 和 4.4 上进行了测试

GitHub 上的 ION 链接

验证成功后,单击按钮将调用此代码以发布到服务器。这是在 gradle 中定义的支持片段 v4:20 内部

compile 'com.android.support:support-v4:20.+'

///////////////////

Ion.with(getActivity())
    .load(URLStr)
    .addQuery("action", "dummyAction")
    .addHeader("Content-Type", "application/json")
    .setLogging("ION_VERBOSE_LOGGING", Log.VERBOSE)
    .setJsonObjectBody(jsonStr)
    .asJsonObject()
    .setCallback(new FutureCallback<JsonObject>() {
    @Override
    public void onCompleted(Exception e, JsonObject result) {
        if (null != e) {
            if (null != result) {

                Log.d(Constants.LOG_TAG, "JSON Result User basic Info: " + result);
            } else {
                Log.e(Constants.LOG_TAG, "error in posting User basic Info");
            }
        } else {
            Log.e(Constants.LOG_TAG, "error in posting User basic Info", e);
        }
    }
    });

我在结果中得到 NullPointer 。 请求 JSON 也是有效的,我正在使用 GSON 来构造它。 当我使用 POSTMAN chrome 应用程序检查它时,响应 JSON 是有效的。

然而,下面的代码工作得很好,但它被废弃了 ION.with(getActivity(), URL) 所以我不知道,我在哪里犯了错误。

    Ion.with(getActivity(), URLStr)
            .addQuery("action", "dummyAction")
            .asJsonObject()
            .setCallback(new FutureCallback<JsonObject>() {
                @Override
                public void onCompleted(Exception e, JsonObject result) {
                    if (e != null) {

                        e.printStackTrace();
                        Toast.makeText(getActivity(), "Error loading user data", Toast.LENGTH_LONG).show();
                        return;
                    }
                    Log.d(Constants.LOG_TAG, "DATA: " + result.toString());
                    String data = result.get("status").getAsString();
                    Log.d(Constants.LOG_TAG, "DATA: " + data);
                }
            });

以下是第一次调用的详细输出

    08-12 14:18:06.010  27928-27928/com.abc.xyz: D/ION_VERBOSE_LOGGING﹕ (0 ms) http://urlHidden/service.php?action=dummyAction: preparing request
    08-12 14:18:06.010  27928-27928/com.abc.xyz: I/ION_VERBOSE_LOGGING﹕ (0 ms) http://urlHidden/service.php?action=dummyAction: Using loader: com.koushikdutta.ion.loader.HttpLoader@42d0e6c8
    08-12 14:18:06.025  27928-28187/com.abc.xyz: D/ION_VERBOSE_LOGGING﹕ (0 ms) http://urlHidden/service.php?action=dummyAction: Executing request.
    08-12 14:18:06.040  27928-28187/com.abc.xyz: I/ION_VERBOSE_LOGGING﹕ (14 ms) http://urlHidden/service.php?action=dummyAction: Response may be served from conditional cache
    08-12 14:18:06.040  27928-28187/com.abc.xyz: V/ION_VERBOSE_LOGGING﹕ (16 ms) http://urlHidden/service.php?action=dummyAction: Resolving domain and connecting to all available addresses
    08-12 14:18:06.195  27928-28187/com.abc.xyz: V/ION_VERBOSE_LOGGING﹕ (167 ms) http://urlHidden/service.php?action=dummyAction: socket connected
    08-12 14:18:06.195  27928-28187/com.abc.xyz: V/ION_VERBOSE_LOGGING﹕ (169 ms) http://urlHidden/service.php?action=dummyAction:
        GET /service.php?post=stepOne HTTP/1.1
        Host: 188.226.224.99
        User-Agent: Dalvik/1.6.0 (Linux; U; Android 4.4.4; GT-N7000 Build/KTU84P)
        Accept-Encoding: gzip, deflate
        Connection: keep-alive
        Accept: */*
        Content-Type: application/json
        If-Modified-Since: Tue, 12 Aug 2014 06:42:34 UTC
    08-12 14:18:06.200  27928-28187/com.abc.xyz: V/ION_VERBOSE_LOGGING﹕ (170 ms) http://urlHidden/service.php?action=dummyAction: request completed
    08-12 14:18:06.355  27928-27928/com.abc.xyz: D/MatchBot﹕ DATA: {"status":"pending"}
    08-12 14:18:06.370  27928-28187/com.abc.xyz: V/ION_VERBOSE_LOGGING﹕ (347 ms) http://urlHidden/service.php?action=dummyAction: Received headers:
        HTTP/1.1 200 OK
        Date: Tue, 12 Aug 2014 08:48:08 GMT
        Server: Apache/2.2.22 (Ubuntu)
        X-Powered-By: PHP/5.3.10-1ubuntu3.11
        Vary: Accept-Encoding
        Content-Encoding: gzip
        Content-Length: 64
        Keep-Alive: timeout=5, max=100
        Connection: Keep-Alive
        Content-Type: text/html
    08-12 14:18:06.380  27928-28187/com.abc.xyz: D/ION_VERBOSE_LOGGING﹕ (355 ms) http://urlHidden/service.php?action=dummyAction: Caching response
    08-12 14:18:06.380  27928-28187/com.abc.xyz: V/ION_VERBOSE_LOGGING﹕ (356 ms) http://urlHidden/service.php?action=dummyAction: Final (post cache response) headers:
        HTTP/1.1 200 OK
        Date: Tue, 12 Aug 2014 08:48:08 GMT
        Server: Apache/2.2.22 (Ubuntu)
        X-Powered-By: PHP/5.3.10-1ubuntu3.11
        Vary: Accept-Encoding
        Content-Encoding: gzip
        Content-Length: 64
        Keep-Alive: timeout=5, max=100
        Connection: Keep-Alive
        Content-Type: text/html
    08-12 14:18:06.380  27928-28187/com.abc.xyz: D/ION_VERBOSE_LOGGING﹕ (356 ms) http://urlHidden/service.php?action=dummyAction: Connection successful
    08-12 14:18:06.385  27928-27928/com.abc.xyz: E/MatchBot﹕ error in posting User basic Info
    08-12 14:18:06.390  27928-28187/com.abc.xyz: D/ION_VERBOSE_LOGGING﹕ (364 ms) http://urlHidden/service.php?action=dummyAction: Recycling keep-alive socket

/////////////////////////////////////////////////////////// ///////////////////////////

import com.google.gson.annotations.SerializedName;

import java.io.Serializable;
import java.util.Date;

/**
 * Created by riinav on 17/6/14.
 */
public class User implements Serializable {

    @SerializedName("facebook_id")
    private String userFBId;

    @SerializedName("status")
    private String registrationStatus;

    private transient Date registeredOnDate;

    public User() {
    }

    public User(String userFBId, String registrationStatus) {
    this.userFBId = userFBId;
    this.registrationStatus = registrationStatus;
    }

    /* 
     * getters, setters and overidden equals and hashcode methods
     */
}

///////////////////////////////////////////////////////////////////////////

import com.google.gson.annotations.SerializedName;

/**
 * Created by riinav on 27/6/14.
 */
public class UserBasicInfo extends User {//implements Serializable {

    @SerializedName("name")
    private String userName;

    @SerializedName("email")
    private String emailId;

    @SerializedName("gender")
    private String gender;

    @SerializedName("bday")
    private String dob;

    @SerializedName("country")
    private String country;

    @SerializedName("city")
    private String city;

    @SerializedName("self_image")
    private String profilePicUrl;

    @SerializedName("school")
    private String school;

    @SerializedName("college")
    private String college;

    @SerializedName("degree")
    private String qualification;

    @SerializedName("sorientation")
    private String sexualPreference;

    @SerializedName("prefered_age")
    private String preferedAge;

    @SerializedName("prefered_city")
    private String preferedCity;

    public UserBasicInfo() {
    super();
    }

    /* 
     * getters, setters and overidden equals and hashcode methods
     */
}

/////////////////////////////////////// User Model json posted to server

User: {
    "college": "University of Mumbai,",
    "bday": "01/01/1980",
    "email": "[email protected]",
    "gender": "Male",
    "degree": "college degree",
    "school": "abc High School,",
    "name": "awesome name",
    "status": "PROCESS",
    "facebook_id": "000000000000000" // test fbId
}

 ///////////////// Server expected response 

 onSuccess:
 {"status":"success"}

 OnError:
 {"status":"error MESSAGE”}

直接传入POJO对象。 Ion 会自动为您将其序列化为 JSON。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android koush/ion lib 无法发布和接收 JSON 响应 的相关文章

随机推荐

  • 使用 Google 帐户 UserService 时如何更新 App Engine 应用程序名称

    我有一个现有的 App Engine Java 应用程序 我们使用用户服务用于对我们的用户进行 Google 帐户身份验证 We d like to update the Application name that shows up on
  • 是否有与 XmlWriter.WriteRaw 等效的 XElement?

    我正在转换一些当前使用的代码XmlWriter创建一个文档来代替返回XElement的内容 到目前为止 我很喜欢以模仿文档结构的方式构建代码 但有些内容是使用XmlWriter WriteRaw以避免重新 xml 化 xml 我在中找不到任
  • 为Web应用程序自定义工作目录运行gradle运行任务/项目结构

    我正在开发小型网络应用程序 我想提供静态文件 我在用着application插入 其中一部分是distribution复制的插件src main dist文件放入发行版 zip 中 运行应用程序gradlew run使用项目目录作为工作目录
  • 如何在具有 Oreo 及以上操作系统的 Android 设备中从 uri 获取文件路径

    要使用 Intent 选择音频文件 我正在使用此功能 fun selectAudioFromStorage val pictureActionIntent Intent Intent ACTION GET CONTENT null pict
  • 通过MATLAB连接postgresql数据库报错

    我正在尝试在 MATLAB 中连接我的 Postgres 数据库 但它向我抛出一个错误 指出 JDBC Driver Error org postgresql Driver Driver Not Found Loaded 这是我使用过的连接
  • 3d 矩阵转 2d 矩阵 matlab

    我使用的是Matlab R2014a 我有一个 3 维 M x N x M 矩阵 A 我想要一种矢量化方式从中提取 2 维矩阵 B 这样对于每个 i j 我有 B i j A i j g i j 其中 g 是大小为 M x N 的二维索引矩
  • Println 改变切片的容量

    考虑下面的代码 package main import fmt func main x byte a fmt Println x fmt Println cap x cap byte a prints false y byte a fmt
  • iOS 如何下载大文件?

    我正在尝试通过 HTTP 请求从 Web 服务器下载文件 gt 40MB 为此 我使用了苹果提供的 SimpleURLConnection 示例 在该示例中 他们只下载图像文件 因此我修改了代码以下载 pdf 文件并将其存储在应用程序的文档
  • 将所有内容与页面底部对齐?

    我正在尝试将 html 页面与浏览器窗口的底部对齐 这是我的方法 div class outer wrapper div outer wrapper min height 950px width 100 position absolute
  • 动态创建的单选按钮列表

    有一个母版页 内容页面有一个包含请求变量的超链接列表 您单击其中一个链接即可转到包含单选按钮列表的页面 也许 第一个问题 当我到达新页面时 我使用其中一个变量来确定是否将单选按钮列表添加到页面上的占位符中 我尝试在 page load 中执
  • 从 mysqli 更改为 pdo

    我对这段代码没有问题 它出奇地工作正常 但我真的不明白它是如何工作的 甚至不明白它是否正确 所以 我对 mysqli 进行 ajax post 或 get 调用的查询如下 con mysqli connect localhost root
  • Lisp中最长的元素链

    语句 找出最长的字符链并返回 例如 输入 1 2 2 3 3 3 4 4 4 4 5 6 输出 4 4 4 4 问题 我可以设法识别列表中的所有不同组并比较它们 但无法让函数返回正确的子集列表 它仅返回最后分析的组 code define
  • 使用 JSOUP 登录 ConEd 网站

    我已经广泛阅读了有关如何做到这一点的内容 并且尝试了许多不同的变体 但我无法让它发挥作用 基本上 我只想登录 ConEdison 网站并抓取我的账单历史记录 这是我所拥有的 Connection Response loginForm Jso
  • 在 django - python 中按名称搜索选择字段

    我在模型中有以下选择字段 STATUS REVIEW RISK ESTIMATE CHOICES 0 High 1 Medium 2 Low class SiverifyProblemStatement models Model risk
  • Bigquery在单个选择中多次取消嵌套

    对此进行跟进 Bigquery 组合来自 2 个不同表的重复字段 ElliottBrossard 的上述解决方案正是我所寻找的 谢谢 我需要从上面取消嵌套字段以获取学生的聚合 比如说 有一个额外的成本字段 每门课程 例如假设上面的输出在st
  • 如何检测wcf服务端的绑定

    假设我有一个 WCF 服务 其中多个端点具有不同类型的绑定 如 tcp basichttp wshttp 等
  • 根据浏览器语言重定向用户(不是 php)[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我的网站将采用 3 种语言 法语 fr 是默认语言 该网站的结构如下 根目录 注意 我没有使用 php 文件 只是简单的 html fr Index html About us
  • 角度材质:垫选择不选择默认值

    我有一个垫选择 其中选项是数组中定义的所有对象 我试图将值设置为默认选项之一 但是在页面呈现时它被保留为选中状态 我的打字稿文件包含 public options2 id 1 name a id 2 name b public select
  • 在fragmentpageradapter中重用片段

    我有一个可以浏览片段的视图分页器 我的FragmentPagerAdapter子类在中创建一个新片段getItem看起来很浪费的方法 有没有FragmentPagerAdapter相当于convertView in the listAdap
  • Android koush/ion lib 无法发布和接收 JSON 响应

    我使用 ION 来 GET POST 进行 REST 并将图像放入 ListView 但我无法使用 POST 方法并接收 JSON 形式的响应 我使用的ION版本是1 3 7 在模拟器以及真实设备 4 1 1 4 2 2 和 4 4 上进行