Org.json.JSONException: Значение ï "¿типа java.lang.String не может быть преобразовано в JSONArray

Я использую вышеуказанную услугу, чтобы получить ответ от сервера и декодировать его в построителе строк. Но когда я запускаю приложение, он показывает предупреждение

org.json.JSONException: Значение ï "¿типа java.lang.String не может быть преобразовано в JSONArray

в журнале cat.

На сервере нет промлама.

protected String doInBackground(String... params) {


 StringBuilder stringBuilder = new StringBuilder();
 try{
 HttpResponse response = null;
 HttpParams httpParameters = new BasicHttpParams();
 HttpClient client = new DefaultHttpClient(httpParameters);

 JSONObject jobj = new JSONObject();
 try {

 jobj.put("page_id",pageID);


 } catch (JSONException e) {
 e.printStackTrace();
 }

 String url = "http://myservice.com/gustbook_berry/mobile/GetOrder";
 Log.i("Send URL:", url);
 // HttpGet request = new HttpGet(url);
 HttpPost request = new HttpPost(url);

 List<*************> page = new ArrayList<*************>(1);
 page.add(new ******************("page_id", jobj.toString()));

 Log.d(TAG, url + page);
 request.setEntity(new UrlEncodedFormEntity(page));

 response = client.execute(request);

 HttpEntity entity = response.getEntity();

 InputStream stream = entity.getContent();
 //String output=EntityUtils.toString(response.getEntity(), HTTP.UTF_8);
 //System.out.println("OUT PUT->>"+output);
 int b;
 while ((b = stream.read()) != -1) {
 stringBuilder.append((char) b);

 System.out.println(stringBuilder.toString()+"\n");
 }
 }catch(Exception e){
 System.out.println(" error ocurres :" + e.getMessage());
 }

 return stringBuilder.toString();
 }
</*************></*************>

Пожалуйста помоги

4 ответа

Сбросьте спецификацию из своей строки до выполнения JSON-кодирования

if (yourstring.startsWith("\ufeff")) {
 yourstring = yourstring.substring(1);
}


просто добавьте

header('Content-Type: application/json; charset=utf-8');

наверху

а затем в результате

печать (json_encode ($ resArr, JSON_UNESCAPED_UNICODE));


Спасибо за ваши ответы. Я нашел там, где неправильно. Так что я изменил код. надеюсь, что этот код поможет кому-то..

protected JSONArray doInBackground(String... params) {


 HttpClient httpclient = new DefaultHttpClient();
 HttpPost httppost = new HttpPost("http://myservice.com/gustbook_berry/mobile/GetOrder");

 HttpResponse response = null;
 StringBuilder result = new StringBuilder();

 try {

 List<*************> ************** = new ArrayList<*************>(1);

 **************.add(new ******************("page_id",getPageID()));
 httppost.setEntity(new UrlEncodedFormEntity(**************));


 // Execute HTTP Post Request
 response = httpclient.execute(httppost);

 } catch (Exception e) {
 // TODO: handle exception
 }


 try {

 HttpEntity entity = response.getEntity();

 InputStream stream = entity.getContent();
 int b;
 while ((b = stream.read()) != -1) {
 result.append((char) b);
 }

 } catch (Exception e) {
 // TODO: handle exception
 }


 JSONArray arrayResult = null;



 try {
 arrayResult = new JSONArray(result.toString());

 } catch (JSONException e) {

 e.printStackTrace();
 try {
 arrayResult = new JSONArray(result.substring(3));
 } catch (JSONException e1) {
 // TODO Auto-generated catch block
 e1.printStackTrace();
 arrayResult = new JSONArray();
 }
 }


 return arrayResult;
 }
</*************></*************>


Изменение кодировки To-> UTF-8 Codepage 65001

licensed under cc by-sa 3.0 with attribution.