我已经看到其他人遇到了这个问题,但是没有一个帖子能够帮助我。我正在尝试将Volley用于我的REST调用库,当我尝试将JSON对象作为参数使用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对象,但是我仍然得到相同的结果。
我也遇到了这个问题。
不一定是因为服务器端存在问题-只是意味着的响应JsonObjectRequest
为空。
服务器很可能应该向您发送内容,而其响应为空这一事实是一个错误。但是,如果这是服务器的工作方式,那么要解决此问题,您将需要更改JsonObjectRequest解析其响应的方式,这意味着创建的子类JsonObjectRequest
并将覆盖parseNetworkResponse
到下面的示例。
@Override
protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
try {
String jsonString = new String(response.data,
HttpHeaderParser.parseCharset(response.headers, PROTOCOL_CHARSET));
JSONObject result = null;
if (jsonString != null && jsonString.length() > 0)
result = new JSONObject(jsonString);
return Response.success(result,
HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
} catch (JSONException je) {
return Response.error(new ParseError(je));
}
}
请记住,使用此修复程序,并且如果服务器响应为空,则请求回调将返回空引用来代替JSONObject
。
问题内容: 我正在尝试从服务器获取JSON值。我不知道我的代码有什么问题。我正在使用,这是我的代码在 码: 这是logcat 这是 JSON 格式 问题答案: 您可能会得到一个空白的答复。它不为null,但 jsontext 为空。因此,您将收到此错误,而不是Nullpointer异常 您是否正在向服务器发送正确的参数。还要检查url是否响应POST请求。
以下是所有的错误: 下面是我的代码:
问题内容: 我在php中有一个API,可以JSON格式发送数据。我编写了以下代码,当我使用wifi时可以正常工作。但是,当我想在3g上从API下载数据时,会收到以下异常:JSONException:在字符0的输入结束 我不知道为什么它可以在wifi上工作,但不能在移动互联网上使用。我的代码: 有人可以帮助我吗? 问题答案: 您可能会得到一个空白的答复。它不为null,但响应为空。因此,您将收到此错
问题内容: 我正在尝试从android解析json,但出现了这个奇怪的异常。我的json数据是 {“ id”:“ 1”,“ owner”:“ 1”,“ name”:“ gravitas”,“ description”:“是一场盛会”,“ start_time”:“ 0000-00-00 00:00:00 “,” end_time“:” 0000-00-00 00:00:00“,” venue“:”
我见过其他人遇到这个问题,但没有一个帖子能够帮助我。我试图在REST调用库中使用Volley,当我试图使用带有JSON对象的Put调用作为参数时,我得到了错误:org。json。JSONException:输入结束于的字符0处。 代码如下: jsonParams日志显示: 有没有其他我错过的场景?看起来请求无法解析JSON对象。我甚至尝试创建一个HashMap,然后用它创建一个JSON对象,但仍然
我在尝试使用PUT方法时遇到了一个问题,我正在使用PUT方法通过web服务更新我的表记录,问题是在尝试更新数据时,我遇到了以下错误: informacioncom.android.volley.解析错误:org.json.JSONException:输入结束在字符0的 如果我检查数据库中的表,它不会输入null值,而是记录空格。 这是我用来更新数据的方法: