Модераторы: javastic
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> получение ответа в формате json 
:(
    Опции темы
Isaev
Дата 17.12.2013, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 8.11.2007
Где: Germany

Репутация: нет
Всего: нет



пытаюсь получить ответ в формате json от моего php скрипта и разобрать его
в общих чертах:
Код

    new RequestTask().execute("http://isaev.url.ph/getQuery.php");
...
  class RequestTask extends AsyncTask<String, String, String> {

    @Override
    protected String doInBackground(String... params) {


      Log.d(LOG_TAG,"#doInBackground#");
      try {
        //создаем запрос на сервер
        HttpParams httpParams=new BasicHttpParams();
        HttpProtocolParams.setVersion(httpParams,HttpVersion.HTTP_1_1);
        HttpProtocolParams.setContentCharset(httpParams,"UTF-8");
        HttpProtocolParams.setHttpElementCharset(httpParams,"UTF-8");
        //   httpParams.setBooleanParameter("http.protocol.expect-continue",false);

        HttpClient hc=new DefaultHttpClient(httpParams);
        hc.getParams().setParameter("http.protocol.version",HttpVersion.HTTP_1_1);
        //hc.getParams().setParameter("http.socket.timeout",new Integer(10000));
        hc.getParams().setParameter("http.protocol.content-charset",HTTP.UTF_8);
        Log.d(LOG_TAG,"  - hc");
        //ResponseHandler<String> res = new BasicResponseHandler();
        //Log.d(LOG_TAG,"  - res");
        //он у нас будет посылать get запрос
        HttpGet getMethod = new HttpGet(params[0]);//(params[0]);
        Log.d(LOG_TAG,"  - getMethod('"+params[0]+"')"+" - "+getMethod.getMethod().toString());
        Log.d(LOG_TAG,"  --URI: "+getMethod.getURI().toString());
        //получаем ответ от сервера
        HttpResponse response = hc.execute(getMethod);
        Log.d(LOG_TAG,"  - response: "+response.getEntity().getContent().toString());

        //HttpEntity entity = response.getEntity();
        //Log.d(LOG_TAG,"  - entity"+response.toString());
        //String str = EntityUtils.toString(entity,"UTF-8");
        //Log.d(LOG_TAG,"  - str"+response.toString());
        //JSONArray json = response.toString();
        //Log.d(LOG_TAG,"  - json");
        //Log.d(LOG_TAG,"response: "+json);

        try {
          JSONArray arr = new JSONArray((JSONTokener)response.getEntity());
          JSONArray subarr;
          int len=arr.length();
          Log.d(LOG_TAG,"length: "+len);
           for (int i = 0; i < len; i++) {
                subarr=arr.getJSONArray(i);
                String mid = subarr.getString(0);
                String title = subarr.getString(1);
                String language = subarr.getString(2);
                Log.d(LOG_TAG,"Arr["+i+"]: {mid='"+mid+"', title='"+title+"', language='"+language+"'}");

           }
           // int id = obj.getInt("id");
//            String str1 = obj.getString("table1");
  //          String str2 = obj.getString("table1_2");
    //        Log.d(LOG_TAG,"str1="+str1+"; str2="+str2);
            //Toast.makeText(getApplicationContext(), "Machine: " + machine,    Toast.LENGTH_SHORT).show();
          //}
        } catch (JSONException jsonEx) {
          Log.e("log_tag","Error parsing data "+jsonEx.toString());
          //Toast.makeText(getApplicationContext(), "fail", Toast.LENGTH_SHORT).show();
        }

        //посылаем на вторую активность полученные параметры
        //Intent intent = new Intent(MyActivity.this, SecondActivity.class);
        //то что куда мы будем передавать и что, putExtra(куда, что);
        //intent.putExtra(SecondActivity.JsonURL, response.toString());
        //startActivity(intent);
      } catch (Exception e) {
        System.out.println("Error(): "+e);
      }
      return null;
    }


в общем на строке
 //получаем ответ от сервера
Код

        HttpResponse response = hc.execute(getMethod);

что-то идёт не так... хотя ответ приходит корректно (вижу в Wireshark), а до его тела никак не могу достучаться
на этой строке в логе вижу следующую ошибку
INFO/System.out(340): Error(): java.lang.ClassCastException: org.apache.http.conn.BasicManagedEntity

что я делаю не так?

ps: колдовать пытался на основе этого примера: ссылка

Это сообщение отредактировал(а) Isaev - 17.12.2013, 14:10
PM MAIL ICQ   Вверх
javastic
Дата 20.12.2013, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: 2
Всего: 27



Ну для начала по ссылке http://isaev.url.ph/getQuery.php не чистый json идёт, а какая-то дока с примерами. Да и линк ниже не рабочий.


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
Isaev
Дата 20.12.2013, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 8.11.2007
Где: Germany

Репутация: нет
Всего: нет



javastic, а что говорит о том, что он не чистый?
я его могу подретушировать, если подскажите что не так

а ссылка сегодня что-то да, не доступна пока

Это сообщение отредактировал(а) Isaev - 20.12.2013, 14:36
PM MAIL ICQ   Вверх
ShellRaiser
Дата 23.12.2013, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


еще чуть и закоммичу
*


Профиль
Группа: Участник
Сообщений: 156
Регистрация: 20.7.2007
Где: Белaрусь, Гродно

Репутация: нет
Всего: 1



Для начала провалидируйте ваш json тут: http://jsonlint.com/
Судя по всему у вас возвращается json с неэкранироваными кавычками и html вставками, что конечно же не может разобрать парсер + ко всему есть проблемы в именах ключей, например:

Цитата

Parse error on line 19:
...         "a:2:{s:4:"unit";s:2:"h1";s:5:"
-----------------------^
Expecting '}', ':', ',', ']'


Это сообщение отредактировал(а) ShellRaiser - 23.12.2013, 16:59
PM MAIL ICQ Skype   Вверх
_zorn_
Дата 24.12.2013, 03:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 21.8.2007

Репутация: нет
Всего: 12



Цитата(ShellRaiser @  24.12.2013,  00:55 Найти цитируемый пост)
ко всему есть проблемы в именах ключей, например

Это опять же из за неэкранированных кавычек.

Isaev, если php скрипт твой, забей все данные в массив или объект, заюзай json_encode и не парься  smile 
PM MAIL   Вверх
javastic
Дата 27.12.2013, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: 2
Всего: 27



Цитата(Isaev @ 20.12.2013,  14:36)
javastic, а что говорит о том, что он не чистый?
я его могу подретушировать, если подскажите что не так

а ссылка сегодня что-то да, не доступна пока

Не чистый, это значит что в нём есть мусор из других символов. Чистый json это файл формата {"ключ": "значение"} c допустимыми многоуровневыми вложениями из тех же символов. Так же допускаются сиволы квадратных скобок, как определение массива.


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
Marshal3
Дата 28.12.2013, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 28.12.2013

Репутация: нет
Всего: нет



Isaev, выведи строчку в лог и смотри где ошибки, что не нужно отбрасывай и будет тебе счастье
PM MAIL   Вверх
Isaev
Дата 6.1.2014, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 8.11.2007
Где: Germany

Репутация: нет
Всего: нет



Переделал скрипт, оставил только json_encode, но валидатор не проходит, ругается на какой-то символ, но не показывает какой
ссылка та же

вот в этом валидаторе проходит, если поставить опцию "Accept non-quoted names", но что-то я не вижу там таких имён и почему их json_encode генерирует, если они присутствуют?

Это сообщение отредактировал(а) Isaev - 6.1.2014, 11:31
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Android | Следующая тема »


 




[ Время генерации скрипта: 0.0891 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.