问题
I try to do a PUT request using Volley Library. I already did get request and put request usin g Override methode getParam(), but for this request i need to send a jsonOjbect that i created before.
But in the response i have :
08-25 09:44:34.638: I/ViewPdf: SaveDataToProxy ERROR(8512):
error: com.android.volley.ParseError: org.json.JSONException: Value <br of type
java.lang.String cannot be converted to JSONObject
So this is my method connection :
public void SaveDataToProxy(JSONObject jsonObject){
// Tag used to cancel the request
String tag_json_obj = "json_obj_req";
String url = Properties.getUrl_proxy() + ":" + Properties.getPort_proxy() +"/api/points/"+this.id_point;
Log.i("url",url);
final ProgressDialog pDialog = new ProgressDialog(this);
pDialog.setMessage("Loading...");
pDialog.show();
JsonObjectRequest jsObjRequest = new JsonObjectRequest
(
Request.Method.PUT, url, jsonObject, new Response.Listener<JSONObject>()
{
@Override
public void onResponse(JSONObject response)
{
Log.i(TAG + ": SaveDataToProxy SUCCESS", "response: " + response);
}
}, new Response.ErrorListener()
{
@Override
public void onErrorResponse(VolleyError error)
{
Log.i(TAG + ": SaveDataToProxy ERROR", "error: " + error);
}
}
)
{
@Override
public Map<String, String> getHeaders() throws AuthFailureError
{
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Content-type", "application/json");
return headers;
}
};
AppController.getInstance().addToRequestQueue(jsObjRequest, tag_json_obj);
}
and this is the JSONObject.toString() that i send :
{
"depositProduct": [
null
],
"collectionProduct": [
null
],
"status": 1,
"end_hour": "04:00:00",
"type": "COLLECTION",
"id": 1,
"collector": "{\"address\":\"14 Rue de la serviellier\",\"city\":\"Germs-sur-l\\u0027oussouet\",\"fax\":\"0380910303\",\"zip_code\":\"65451\",\"transit_date\":\"2014-08-25 00:00:00\",\"name\":\"Jeanjean\",\"tel\":\"0643665316\",\"siret\":\"73282932000074\",\"weight\":0.0,\"volume\":0.0,\"id_erp\":20,\"point_id\":1,\"quantity\":0,\"id\":1}",
"closed_client": false,
"id_erp": 111,
"miscellaneous": "inf test2",
"infos": "test tablette",
"downtime": "2",
"form_type": "cerfa11352_02",
"sequence": 1,
"producer": "{\"address\":\"207 rue charles de gaulle\",\"city\":\"Montbard\",\"email\":\"Dupond.patrick@gmail.com\",\"fax\":\"0380954609\",\"zip_code\":\"21500\",\"id_erp\":\"C10018-1\",\"name\":\"Foyer mutualisteZZ\",\"waste_code\":\"215004\",\"waste_adr\":\"un 3291 Dechet d\\u0027hopital non specifie, NSA, 6.2II\",\"signature\":\"/mnt/sdcard/tour_1/point_1/producer_1.png\",\"siret\":\"73282932000074\",\"tel\":\"0380915454\",\"transit_date\":\"2014-08-25 00:00:00\",\"volume\":0.0,\"weight\":0.0,\"point_id\":1,\"quantity\":0,\"id\":1}",
"no_waste": false,
"factory": "{\"address\":\"Usine d\\u0027incineration les bouillots\",\"city\":\"Bayet\",\"fax\":\"0470456168\",\"zip_code\":\"03500\",\"name\":\"LUCANE\",\"tel\":\"0470454857\",\"siret\":\"97596145524658\",\"signature\":\"/mnt/sdcard/tour_1/point_1/factory_1.png\",\"refusal_support_reason\":\"0\",\"weight\":0.0,\"volume\":0.0,\"point_id\":1,\"operation_type\":0,\"id_erp\":31,\"quantity\":0,\"refusal_support\":0,\"id\":1}",
"id_tour": 1,
"begin_hour": "06:00:00",
"internal_error": false
}
i hope that you will can help me =)
EDIT 1 : This is my full stack trace , we can see just the connection , and nothing of very important...
08-25 10:21:03.106: D/Volley(29845): [195] BasicNetwork.logSlowRequests: HTTP response for request=<[ ]
http://192.168.0.60:80/api/points/1 0x6768b5f7 NORMAL 5>
[lifetime=6891], [size=7531], [rc=200], [retryCount=1]
08-25 10:21:03.106: I/ViewPdf: SaveDataToProxy ERROR(29845): error: com.android.volley.ParseError: org.json.JSONException: Value <br of type java.lang.String cannot be converted to JSONObject
08-25 10:21:03.106: D/Volley(29845): [1] Request.finish: 6894 ms: [ ] http://192.168.0.60:80/api/points/1 0x6768b5f7 NORMAL 5
回答1:
This is not your problem this is server side problem, the server dose not return valid json to you. it actually returns you html code, in order to see what exactly it returns just install add on for broswer for example RESTClient for mozilla and send your request to the server by corresponding type(post-get-...) then see server result.
来源:https://stackoverflow.com/questions/25483379/error-volley-library-com-android-volley-parseerror-org-json-jsonexception