Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Получение JSON с сервера - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Получение ответа в формате json http://www.cyberforum.ru/android-dev/thread1046694.html
пытаюсь получить ответ в формате json от моего php скрипта и разобрать его. В общих чертах: new RequestTask().execute("http://isaev.url.ph/getQuery.php"); ... class RequestTask extends...
Программирование Android Запуск Activiry из Service Как запустить activity из сервиса так, чтобы при этом на фоне не показывалось основное приложение (которое рождает сервис) Наверное непонятно, объясню подробнее. Имеется сервис. По определенному... http://www.cyberforum.ru/android-dev/thread1046402.html
Преобразования через матрицы Программирование Android
Подскажите пожалуйста можно ли с помощью матриц преобразований брать из атласа определенный кадр и рисовать на экране в заданной точке? Сейчас для этого использую: public void drawBitmap (Bitmap...
Программирование Android Не удаляется приложение с рабочего стола
Свое приложение закинул на телефон,установил,проверил все работает. Решил удалить как обычно. Удерживаю иконку приложения и перетаскиваю в корзину. Но телефон ни как на это не отреагировал. Удалил...
Программирование Android При долгом нажатии вывести контекстное меню http://www.cyberforum.ru/android-dev/thread1046200.html
Здравствуйте, подскажите, пожалуйста, как сделать так, чтобы при долгом нажатии на адресную строку, выводилось контекстное меню. Браузер отображается через компонент WebView. BrowserActivity.java...
Программирование Android Как растягивать фон в layout только по горизонтали Есть layout, у него установлена картинка в качестве фона. Проблема в том, что картинка теряет пропорции при растягивании. Надо, чтобы картинка растягивалась только по горизонтали, а не вместившееся... подробнее

Показать сообщение отдельно
Sanu0074
58 / 58 / 2
Регистрация: 14.06.2010
Сообщений: 1,189
Записей в блоге: 5

Получение JSON с сервера - Программирование Android

18.12.2013, 13:57. Просмотров 3384. Ответов 3
Метки (Все метки)

Есть класс который принимает строку URL и возвращает JSONObject

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
public class Json {
    
    public static JSONObject getJson(String url){
        
        InputStream is = null;
        String result = "";
        JSONObject jsonObject = null;
        Log.d("mylog", "http_url="+url);
        // HTTP
        try {           
            HttpClient httpclient = new DefaultHttpClient(); // for port 80 requests!
            HttpPost httppost = new HttpPost(url);
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            is = entity.getContent();
        } catch(Exception e) {
            return null;
        }
        Log.d("mylog", "// Read response to string");
        // Read response to string
        try {           
            BufferedReader reader = new BufferedReader(new InputStreamReader(is,"utf-8"),8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            result = sb.toString();  
            Log.d("mylog", "result="+result);
        } catch(Exception e) {
            return null;
        }
 
        // Convert string to object
        try {
            jsonObject = new JSONObject(result);            
        } catch(JSONException e) {
            return null;
        }
        Log.d("mylog", "jsonObject="+jsonObject);
        return jsonObject;
 
    }
    
}
Вызов из активити (запись в лог):
Java
1
Log.d("mylog", "JSON > "+Json.getJson("http://home-android.ru/client/autch"));
В лог попадает null, не пойму почему, даже в классе Json процедура не доходит до строки: Log.d("mylog", "// Read response to string");

В чем тут проблема?

Добавлено через 52 минуты
сделал в новом потоке, проблема решилась:
Java
1
2
3
4
5
6
new Thread() {  //открываем новый поток
            @Override
            public void run() {
                Log.d("mylog", "JSON > "+Json.getJson("http://home-android.ru/client/autch"));
            }
        }.start();
но теперь в логе это:
Java
1
2
3
4
12-18 11:41:04.544: D/mylog(16566): http_url=http://home-android.ru/client/autch 
12-18 11:41:04.944: D/mylog(16566): // Read response to string 
12-18 11:41:04.944: D/mylog(16566): result=п»їп»ї{"login":"sanu0074","pass":"pwd2"} 
12-18 11:41:04.964: D/mylog(16566): JSON > null
т.е. строку от сервера получает, а JSONObject возвращать нехочет... т.е. ошибка на этом участке:
Java
1
2
3
4
5
6
7
8
// Convert string to object 
        try { 
            jsonObject = new JSONObject(result);             
        } catch(JSONException e) { 
            return null; 
        } 
        Log.d("mylog", "jsonObject="+jsonObject); 
        return jsonObject;
Что здесь может быть?
Вот что в стек трейсе:
Код
12-18 11:46:03.914: E/myLOG(17965): org.json.JSONException: Value  of type java.lang.String cannot be converted to JSONObject 
12-18 11:46:03.914: E/myLOG(17965):     at org.json.JSON.typeMismatch(JSON.java:111) 
12-18 11:46:03.914: E/myLOG(17965):     at org.json.JSONObject.<init>(JSONObject.java:158) 
12-18 11:46:03.914: E/myLOG(17965):     at org.json.JSONObject.<init>(JSONObject.java:171) 
12-18 11:46:03.914: E/myLOG(17965):     at ru.homeandroid.Json.getJson(Json.java:53) 
12-18 11:46:03.914: E/myLOG(17965):     at ru.homeandroid.MainActivity$1.run(MainActivity.java:98)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru