Ich habe Probleme, wenn Sie versuchen, json auf dem Server von Android zu posten. Der Fehler lautet:So veröffentlichen Sie JSON String von Android
Fehler beim Laden von JSON. Sonderzeichen dürfen nicht in der Anfrage enthalten sein. Bitte überprüfen Sie den angeforderten JSON.
Ich habe viele Beispiele gefolgt, aber keine waren hilfreich. Bitte schlagen Sie eine Lösung vor oder helfen Sie mir, das Problem im Code zu finden.
Unten ist der Code zum Posten der JSON-Zeichenfolge auf dem Server.
public class JSONParser {
static InputStream is = null;
static JSONObject jObj = null;
static String json = "";
// constructor
public JSONParser() {
}
public JSONObject getJSONFromUrl(String url) {
// Making HTTP request
try {
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
/* ====================================================================================================*/
JSONObject listobj = new JSONObject();
JSONObject listInvoice = new JSONObject();
listInvoice.put("client_id","");
listInvoice.put("date_from","");
listInvoice.put("date_to","");
listInvoice.put("invoice_number","");
listInvoice.put("invoice_record_status","");
listInvoice.put("invoice_status","");
listInvoice.put("page","1");
listInvoice.put("per_page_record","10");
listobj.put("listInvoice", listInvoice);
//--List nameValuePairs = new ArrayList(1);
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
nameValuePairs.add(new BasicNameValuePair("json_data", listobj.toString()));
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
Log.d("JSON",listobj.toString());
/*======================================================================================================*/
HttpResponse httpResponse = httpClient.execute(httpPost);
String is = EntityUtils.toString(httpResponse.getEntity());
Log.d("JSON","RESPONSE : " + is);
//--HttpEntity httpEntity = httpResponse.getEntity();
//--is = httpEntity.getContent();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
catch (JSONException e) {
Log.e("JSON",e.getMessage());
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
json = sb.toString();
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}
// try parse the string to a JSON object
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
// return JSON String
return jObj;
}
}
}
[Sonderzeichen in Json können das Problem pausieren] [1]. Versuchen Sie, kleine Sonderzeichen für Kleinbuchstaben zu verwenden. [1]: http://stackoverflow.com/questions/7866063/how-to-add-string-with-special-character-as-json-key – Snicolas
Warum Sie iso-8859- verwenden 1 Codierung? Warum nicht UTF-8? – pepyakin
@kknot ich auch mit utf-8 überprüft, aber immer noch mit demselben Problem –