Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
1

Падает приложение для публикации вконтакте

19.05.2015, 18:51. Показов 1947. Ответов 22
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
public class VkWebViewClient extends WebViewClient {
 
    private static final String TAG = "Vkfunc";
   public String access;
   public String us_id;
   public String mess;
    public VkWebViewClient() {
        // TODO Auto-generated constructor stub
    }
 
    @Override
    public void onPageFinished(WebView view, String url) {
        Log.i("VkWebViewClient onPageFinished", url);
        if (url.contains("oauth.vk.com/blank.html#")) {
            if (url.contains("error")) {
                // Error
            } else {
                String ahrore = url.substring(url.indexOf("#") + 1);
 
                Log.d(TAG, ahrore);
 
                String access_token = ahrore.substring(ahrore.indexOf("n")+2,ahrore.indexOf("&"));
                access = access_token;
                //String user_id = null;
 
                Log.d(TAG, access_token);
 
                int i = ahrore.lastIndexOf("=");
                String tmpStr = ahrore.substring(i + 1, ahrore.length());
 
                Log.d(TAG, tmpStr);
                us_id = tmpStr;
 
                Log.d(TAG, us_id);
                boolean errorFlag = true;
 
 
                String mess = "Hello Post";
 
 
 
                mess = "Hello";
                String urls = "https://api.vk.com/method/"+
                        "wall.post?"+
                        "uid="+ us_id+
                        "&message="+mess+
                        "&access_token="+access
                        ;
 
                HttpClient client = new DefaultHttpClient();
                HttpGet request = new HttpGet(urls);
 
                try {
                    HttpResponse response = client.execute(request); на этой строчке приложение падает вылетает ошибка Has Stopped
 
 
                    HttpEntity entity = response.getEntity();
                    Log.d(TAG, "Запрос");
                    String responseText = EntityUtils.toString(entity);
 
                    //parse response for error code or not
                   // errorFlag = parseResponse(responseText);
 
                    //Log.d(Constants.DEBUG_TAG,"response text="+responseText);
                }
                catch(ClientProtocolException cexc){
                    cexc.printStackTrace();
                }
                catch(IOException ioex){
                    ioex.printStackTrace();
                }
 
            }
 
 
 
        }
 
    }
}
Я приложил код в котором делаю авторизацию: получаю токен доступа и id пользователя - это проходит нормально затем выполняю запрос к API контакта для публикации сообщения на стену и здесь вылетает ошибка.Посмотрите пожалуйста код почему возникает эта ошибка как ее исправить??

Добавлено через 1 минуту
Может url не тот или в другом методе нужно делать запрос??

Добавлено через 5 минут
Можете обьяснить как исправить??

Добавлено через 14 минут
там время жизни на токен равно нулю может поэтому??
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.05.2015, 18:51
Ответы с готовыми решениями:

Приложение падает после добавления класса для работы с БД
Добрый день. Работаю в андроид студио. Создал новый класс для работы с БД. При вызове методом в...

После публикации приложение перестало работать
Реализовал аутентификацию через гугл. Опубликовал в тестовом режиме в консоли разработчика. В...

Приложение не может получить доступ к БД после публикации в IIS
Добрый день. Прошу помощи. Использую AspNet Core 2.1, VisualStudio 2017, Win 10 1. Создал...

Падает приложение
final Button changeB = (Button)findViewById(R.id.but_change); ...

22
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
19.05.2015, 21:43 2
Лучший ответ Сообщение было отмечено yura91 как решение

Решение

yura91, товарищ, вот ты не первый день на форуме, а ошибку приложить не догадался.
И время жизни токена, по-моему, очень большое.
0
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
20.05.2015, 08:50 3
Лучший ответ Сообщение было отмечено yura91 как решение

Решение

Ну так запросы в сеть надо в отдельном потоке делать, это разжовано стописят раз уже.
http://developer.alexanderklim... nctask.php
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
20.05.2015, 08:55 4
Лучший ответ Сообщение было отмечено yura91 как решение

Решение

а можете привести готовый код? а то по ссылке надо еще идти и что-то читать
1
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
20.05.2015, 09:08  [ТС] 5
мне готовый код не нужен

Добавлено через 5 минут
а в методе в этом же onPageFinished думаю можно этот поток создавать верно же??

Добавлено через 24 секунды
а в методе в этом же onPageFinished думаю можно этот поток создавать верно же??
0
393 / 338 / 83
Регистрация: 17.10.2014
Сообщений: 1,007
20.05.2015, 09:17 6
yura91, yura91, onPageFinished() вызывается когда страница загружена, чего в твоей ситуации нет, используй onPageStarted(), а в нем и юзай asynctask
0
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
20.05.2015, 09:38  [ТС] 7
а вот когда я получал токен там кроме user_id и самого токена еще приходит параметр время жизни так вот он равен нулю. О чем это говорит то что при запросах к api мне нужно каждый раз и токен новый получать обновлять его??
0
393 / 338 / 83
Регистрация: 17.10.2014
Сообщений: 1,007
20.05.2015, 09:43 8
Цитата Сообщение от yura91 Посмотреть сообщение
О чем это говорит то что при запросах к api мне нужно каждый раз и токен новый получать обновлять его??
по моему уже ответили на твой вопрос:
Цитата Сообщение от CoolMind Посмотреть сообщение
И время жизни токена, по-моему, очень большое.
0
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
20.05.2015, 18:33  [ТС] 9
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
public class VkWebViewClient extends WebViewClient {
 
    private static final String TAG = "Vkfunc";
   public String access;
   public String us_id;
   public String mess;
   Context context;
   SharedPreferences mSettings;
   public static final String APP_PREFERENCES = "mysettings";
 
    public VkWebViewClient( Context context ) {
        // TODO Auto-generated constructor stub
        this.context = context;
    }
 
    public class VkPostTask extends AsyncTask<Void, Void, Void> {
 
       // Postvk vk;
       // Context context;
 
 
        public VkPostTask(Context context){
           // this.context = context;
 
           // vk = new Postvk(this.context);
        }
 
        @Override
        protected Void doInBackground(Void... params) {
 
 
            //vk.postvk();
            Log.d(TAG, "здесь");
 
            mSettings = context.getSharedPreferences(APP_PREFERENCES, Context.MODE_PRIVATE);
            String savedText = mSettings.getString("Access_token", "");
            String savedText1 = mSettings.getString("User_id", "");
 
            if(savedText == "" || savedText1 == "")
            {
                Log.d("Vkfunc", "Еще пусто");
            }
 
            Log.d(TAG, savedText);
 
            String mess = "Hello Post";
 
            Log.d(TAG, savedText1);
 
 
            String urls = "https://api.vk.com/method/"+
                    "wall.post?"+
                    "uid="+ savedText1+
                    "&message="+mess+
                    "&access_token="+savedText
                    ;
 
            Log.d(TAG, "здесь");
 
 
            HttpClient client = new DefaultHttpClient();
 
//            Log.d(TAG, access);
            HttpPost request = new HttpPost(urls); на этой строчке происходит ошибка
 
           // Log.d(TAG, access);
 
            try {
 
                HttpResponse response = client.execute(request);
                Log.d(TAG, "Запрос");
 
 
 
                HttpEntity entity = response.getEntity();
                Log.d(TAG, "Запрос");
                String responseText = EntityUtils.toString(entity);
 
                //parse response for error code or not
                // errorFlag = parseResponse(responseText);
 
                //Log.d(Constants.DEBUG_TAG,"response text="+responseText);
            }
            catch(ClientProtocolException cexc){
                cexc.printStackTrace();
            }
            catch(IOException ioex){
                ioex.printStackTrace();
            }
 
            return null;
        }
 
 
    }
   @Override
  public void  onPageStarted(WebView view, String url, Bitmap favicon)
    {
 
 
        new VkPostTask(context).execute();
 
    }
 
    @Override
    public void onPageFinished(WebView view, String url) {
 
 
        context = this.context;
       // mSettings = context.getSharedPreferences(APP_PREFERENCES, Context.MODE_PRIVATE);
        Editor editor = mSettings.edit();
       // Log.i("VkWebViewClient onPageFinished", url);
        if (url.contains("oauth.vk.com/blank.html#")) {
            if (url.contains("error")) {
                // Error
             } else {
                String ahrore = url.substring(url.indexOf("#") + 1);
 
                Log.d(TAG, ahrore);
 
                String access_token = ahrore.substring(ahrore.indexOf("n")+2,ahrore.indexOf("&"));
                access = access_token;
                //String user_id = null;
 
                Log.d(TAG, access_token);
 
                int i = ahrore.lastIndexOf("=");
                String tmpStr = ahrore.substring(i + 1, ahrore.length());
 
                Log.d(TAG, tmpStr);
                us_id = tmpStr;
 
                Log.d(TAG, us_id);
                boolean errorFlag = true;
 
                editor.putString("Access_token", access);
                editor.putString("User_id", us_id);
                editor.apply();
               
 
 
 
            }
 
 
 
        }
 
    }
}
Вроде и новый поток создал для пост запроса а все равно на строчке HttpPost request = new HttpPost(urls); выдает ошику с чем это может быть связано ??можете код посмотреть?? В SharedPreference токен и id userа есть. Можете подсказать как исправить ошибку??

Добавлено через 10 минут
Может в Async Task когда делаешь пост запрос надо что то возвращать значение какое то хотя почему??
0
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
20.05.2015, 18:51 10
Разрешение в магифесте выставил?
0
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
20.05.2015, 18:58  [ТС] 11
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.examplemydetobj.vkpost" >
    <uses-permission android:name="android.permission.INTERNET"/>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
 
</manifest>
Вот выставил а что тогда не так??

Добавлено через 58 секунд
странно просто почему ошибка ??
0
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
20.05.2015, 19:01 12
Што за ошибка постесняюсь спросить.
0
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
20.05.2015, 19:08  [ТС] 13
Debugerом отлаживал пишет это No such instance field : mFuture
No such instance field : mWorker что это значит?? А логи чет не показывают ошибку

Добавлено через 1 минуту
В логи все чистые почему в них не выводится ошибка? Может еще с утилитой adb что то??
0
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
20.05.2015, 19:33 14
Eclipse?
0
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
21.05.2015, 11:35  [ТС] 15
Android studio

Добавлено через 32 секунды
Android Studio после отладки по wifi могло такое произойти. Так а ошибка в чем может быть неизвестно?? А может по другому как то можно этот пост запрос сделать?? Какие еще могут быть варианты ??

Добавлено через 15 часов 52 минуты
FATAL EXCEPTION: AsyncTask #2
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:299)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
at java.util.concurrent.FutureTask.run(FutureTask.java:239)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:838)
Caused by: java.lang.IllegalArgumentException: Illegal character in query at index 62: https://api.vk.com/method/wall... sage=Hello Post&access_token=37b6c56439971cadbad2696376c9d57292da78c0f8e11512dd983a579ed18f a7d0ace1fe604fe27ce37ad
at java.net.URI.create(URI.java:727)
at org.apache.http.client.methods.HttpPost.<init>(HttpPost.java:84)
at com.examplemydetobj.vkpost.VkWebViewClient$VkPostTask.doInBackground(VkWebViewCl ient.java:91)
at com.examplemydetobj.vkpost.VkWebViewClient$VkPostTask.doInBackground(VkWebViewCl ient.java:43)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask.run(FutureTask.java:234)
************at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
************at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
************at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
************at java.lang.Thread.run(Thread.java:838)

Вот лог ошибки. Можете сказать причину почему она возникает и как исправить??

Добавлено через 2 минуты
на месте падает где пост запрос выполняется подскажите в чем дело??
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
21.05.2015, 11:36 16
вангую что ему не нравится ПРОБЕЛ после слова Hello
1
393 / 338 / 83
Регистрация: 17.10.2014
Сообщений: 1,007
21.05.2015, 11:43 17
Паблито, я вот щас попробовал - в ответ пришло:
XML
1
{"response":{"post_id":485}}
это типа я уже что то запостил?))
yura91, есть там что на стене то?))
0
Pablito
21.05.2015, 11:46
  #18

Не по теме:

я тоже уже попробовал, правда прямо в браузере :D

0
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
21.05.2015, 11:47  [ТС] 19
да есть а как ты сделал?как исправить код?

Добавлено через 26 секунд
удалить пробел просто??
0
393 / 338 / 83
Регистрация: 17.10.2014
Сообщений: 1,007
21.05.2015, 11:49 20
Паблито, http://vk.com/id41024374 посты идут

Добавлено через 56 секунд
yura91, эт тебе урок, так как не надо токен свой сливать
0
21.05.2015, 11:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.05.2015, 11:49
Помогаю со студенческими работами здесь

падает приложение
Приложение PyQt иногда падает в самых неожиданных местах. При этом никаких сообщений в консоли(cmd)...

Выбор решения для проекта! Приложение для Windows + приложение для Android или Web приложение?
Здравствуйте! Один мой знакомый, владелец мебельной фирмы, обратился ко мне с серьезным...

Приложение падает из-за QTimer
Я читал где-то, что приложение может падать из-за того, что где-то встречается нулевой указатель,...

Приложение ВКонтакте
Подскажите как сделать такие приложения как ВКонтакте p.s.в ActionScript ничего не понимаю

Приложение вконтакте
Здравствуйте, уважаемые знатоки. Делаю Desctop приложение для отправки сообщений на стену. Мне...

ВКонтакте приложение
private void button1_Click(object sender, EventArgs e) { string...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru