如何获取REST WebService的String类型响应?AndroidNetworking报错解决
解决AndroidNetworking接收字符串响应的问题
这个问题的核心原因很明确:你当前的代码用getAsJSONObject()来解析响应,但服务器返回的是纯字符串(比如示例里的希伯来语文本"עסקה"),不是标准的JSON对象,所以JSON解析器会抛出转换异常。
要正确获取String类型的响应,只需要把解析方法换成对应字符串的版本即可,具体步骤如下:
- 把
getAsJSONObject()替换为getAsString() - 将监听器从
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
相关产品推荐
相关产品推荐

