我看到其他人遇到过这个问题,但没有一个帖子能够帮助我。我试图使用Volley作为我的REST调用库,当我试图使用JSON Object作为参数的Put调用时,我得到了error with: org.json.JSONException: End of input at character 0 of
。
代码如下:
protected void updateClientDeviceStatus(Activity activity, final int status) {
JSONObject jsonParams = new JSONObject();
try {
jsonParams.put("statusId", String.valueOf(status));
} catch (JSONException e1) {
e1.printStackTrace();
}
Log.i(LOG_TAG, "json: " + jsonParams.toString());
String url = Constants.API_URL + "client/device/" + getDeviceId();
// Request a response from the provided URL.
JsonObjectRequest request = new JsonObjectRequest
(Request.Method.PUT, url, jsonParams, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.i(LOG_TAG, "updated client status");
Log.i(LOG_TAG, "response: " + response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.i(LOG_TAG, "error with: " + error.getMessage());
if (error.networkResponse != null)
Log.i(LOG_TAG, "status code: " + error.networkResponse.statusCode);
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("User-Agent", getUserAgent());
params.put("X-BC-API", getKey());
return params;
}
@Override
public String getBodyContentType() {
return "application/json";
}
};
request.setRetryPolicy(new DefaultRetryPolicy(20000, 3, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
MySingleton.getInstance(activity).addToRequestQueue(request);
}
}
字符串
jsonParams日志显示:
json: {"statusId":"1"}
型
还有其他的设置我遗漏了吗?看起来请求不能解析JSON对象。我甚至尝试创建一个HashMap,然后使用它来创建一个JSON对象,但我仍然得到相同的结果。
7条答案
按热度按时间dsf9zpds1#
我也遇到过这个问题。
这并不一定是因为服务器端的问题-它只是意味着
JsonObjectRequest
的响应是空的。很可能是服务器应该向你发送内容,而它的响应是空的这一事实是一个bug。然而,如果这是服务器应该采取的行为,那么为了解决这个问题,你需要改变JsonObjectRequest解析它的响应的方式,这意味着创建
JsonObjectRequest
的子类,并将parseNetworkResponse
覆盖到下面的示例中。字符串
请记住,通过此修复,如果服务器的响应为空,则请求回调将返回空引用,而不是
JSONObject
。h7wcgrx32#
可能没有意义,但没有别的工作,但我添加一个内容类型的头
字符串
pprl5pva3#
在我的情况下,这只是我发送的请求(POST)是不正确的。我交叉检查我的字段,并指出,有一个不匹配,这是服务器期望得到因此错误->结束输入的字符0的.
2vuwiymt4#
我也有同样的问题,我通过创建一个自定义的JsonObjectRequest来修复它,它可以捕获null或空响应:
字符串
然后用这个替换默认的JsonObjectRequest!
wqnecbli5#
您需要检查服务器响应是否不为空。可能是一个空字符串“"。
字符串
hs1rzwqc6#
我也遇到过同样的问题,只是发生了一个愚蠢的小错误。
而不是
字符串
应
型
5uzkadbs7#
如果你需要这个在Kotlin这个...
字符串