Volley JSONException: Fin de l'entrée au caractère 0 de
J'ai vu d'autres viennent sur ce problème, mais aucun des postes ont été en mesure de m'aider. Je suis d'essayer d'utiliser de Volley de mon appel RESTE de la bibliothèque, et lorsque j'essaie d'utiliser un appel de Put avec un Objet JSON en tant que paramètre, je suis error with: org.json.JSONException: End of input at character 0 of
.
Voici le code:
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);
}
}
La jsonParams journal affiche:
json: {"statusId":"1"}
Est-il un autre réglage que je suis absent? Il semble que la demande ne peut pas analyser l'Objet JSON. J'ai même essayé de créer une table de hachage, puis l'utilise pour créer un Objet JSON, mais j'obtiens toujours le même résultat.
source d'informationauteur Mike Walker
Vous devez vous connecter pour publier un commentaire.
Moi aussi j'ai rencontré ce problème.
Il n'est pas nécessairement vrai que c'est à cause d'un problème sur votre serveur côté - cela signifie simplement que la réponse de la
JsonObjectRequest
est vide.Il se peut très bien que le serveur doit être en vous envoyant du contenu, et le fait que sa réponse est vide est un bug. Si, cependant, ce est la façon dont le serveur est censé se comporter, alors pour résoudre ce problème, vous devez modifier la façon dont JsonObjectRequest analyse sa réponse, le sens de la création d'une sous-classe de
JsonObjectRequest
et en remplaçant laparseNetworkResponse
à l'exemple ci-dessous.Garder à l'esprit que, avec ce correctif, et dans le cas d'une réponse vide à partir du serveur, la demande de rappel sera de retour d'une référence null à la place de la
JSONObject
.Ne pourrait pas faire de sens, mais rien d'autre n'a fonctionné pour moi, mais l'ajout d'un entête content-type
Dans mon cas, c'était tout simplement la demande j'ai été l'envoi(POST) n'était pas correct. J'ai vérifié mes champs et a noté qu'il y avait une incompatibilité, le serveur a été l'espoir d'obtenir ainsi, l'erreur->fin de saisie à caractère 0...