You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取REST WebService的String类型响应?AndroidNetworking报错解决

解决AndroidNetworking接收字符串响应的问题

这个问题的核心原因很明确:你当前的代码用getAsJSONObject()来解析响应,但服务器返回的是纯字符串(比如示例里的希伯来语文本"עסקה"),不是标准的JSON对象,所以JSON解析器会抛出转换异常。

要正确获取String类型的响应,只需要把解析方法换成对应字符串的版本即可,具体步骤如下:

  1. 把getAsJSONObject()替换为getAsString()
  2. 将监听器从JSONObjectRequestListener换成StringRequestListener,这样就能直接拿到服务器返回的字符串内容

修改后的完整代码如下:

JSONObject res = new JSONObject();
try {//json format
    res.put("ErrorCode","000");
    Log.i("req",res.toString());
} catch (JSONException e) {
    e.printStackTrace();
}

AndroidNetworking.post("https://gateway20.pelecard.biz/services/GetErrorMessageHe")
    .addJSONObjectBody(res)
    .setTag("test")
    .setPriority(Priority.MEDIUM)
    .build()
    // 这里是关键修改:换成getAsString和StringRequestListener
    .getAsString(new StringRequestListener() {
        @Override
        public void onResponse(String response) {
            // 直接拿到字符串响应,无需再转换
            Log.i("res", response);
        }

        @Override
        public void onError(ANError error) {
            Log.i("ERROR", error.toString());
        }
    });

额外说明

如果你不确定服务器返回的类型(可能有时候是JSON,有时候是字符串),可以先按字符串接收,再尝试将字符串解析为JSONObject/JSONArray,通过捕获异常来处理两种情况:

try {
    JSONObject jsonResponse = new JSONObject(response);
    // 处理JSON对象逻辑
} catch (JSONException e) {
    // 说明是纯字符串,直接处理
    Log.i("res", response);
}

内容的提问来源于stack exchange,提问作者Noam Riahi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 15:13:10