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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
yura91
29 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,238
#1

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

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

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 минут
там время жизни на токен равно нулю может поэтому??
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
19.05.2015, 21:43     Падает приложение для публикации вконтакте #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
yura91, товарищ, вот ты не первый день на форуме, а ошибку приложить не догадался.
И время жизни токена, по-моему, очень большое.
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
20.05.2015, 08:50     Падает приложение для публикации вконтакте #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Ну так запросы в сеть надо в отдельном потоке делать, это разжовано стописят раз уже.
http://developer.alexanderklimov.ru/.../asynctask.php
Pablito
2410 / 1855 / 581
Регистрация: 12.05.2014
Сообщений: 6,591
Завершенные тесты: 1
20.05.2015, 08:55     Падает приложение для публикации вконтакте #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
а можете привести готовый код? а то по ссылке надо еще идти и что-то читать
yura91
29 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,238
20.05.2015, 09:08  [ТС]     Падает приложение для публикации вконтакте #5
мне готовый код не нужен

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

Добавлено через 24 секунды
а в методе в этом же onPageFinished думаю можно этот поток создавать верно же??
androbro
323 / 283 / 59
Регистрация: 17.10.2014
Сообщений: 835
20.05.2015, 09:17     Падает приложение для публикации вконтакте #6
yura91, yura91, onPageFinished() вызывается когда страница загружена, чего в твоей ситуации нет, используй onPageStarted(), а в нем и юзай asynctask
yura91
29 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,238
20.05.2015, 09:38  [ТС]     Падает приложение для публикации вконтакте #7
а вот когда я получал токен там кроме user_id и самого токена еще приходит параметр время жизни так вот он равен нулю. О чем это говорит то что при запросах к api мне нужно каждый раз и токен новый получать обновлять его??
androbro
323 / 283 / 59
Регистрация: 17.10.2014
Сообщений: 835
20.05.2015, 09:43     Падает приложение для публикации вконтакте #8
Цитата Сообщение от yura91 Посмотреть сообщение
О чем это говорит то что при запросах к api мне нужно каждый раз и токен новый получать обновлять его??
по моему уже ответили на твой вопрос:
Цитата Сообщение от CoolMind Посмотреть сообщение
И время жизни токена, по-моему, очень большое.
yura91
29 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,238
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 когда делаешь пост запрос надо что то возвращать значение какое то хотя почему??
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
20.05.2015, 18:51     Падает приложение для публикации вконтакте #10
Разрешение в магифесте выставил?
yura91
29 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,238
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 секунд
странно просто почему ошибка ??
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
20.05.2015, 19:01     Падает приложение для публикации вконтакте #12
Што за ошибка постесняюсь спросить.
yura91
29 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,238
20.05.2015, 19:08  [ТС]     Падает приложение для публикации вконтакте #13
Debugerом отлаживал пишет это No such instance field : mFuture
No such instance field : mWorker что это значит?? А логи чет не показывают ошибку

Добавлено через 1 минуту
В логи все чистые почему в них не выводится ошибка? Может еще с утилитой adb что то??
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
20.05.2015, 19:33     Падает приложение для публикации вконтакте #14
Eclipse?
yura91
29 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,238
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.post?...&message=Hello Post&access_token=37b6c56439971cadbad2696376c9d57292da78c0f8e11512dd983a579ed18fa7d0ace1fe604fe27ce37ad
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(VkWebViewClient.java:91)
at com.examplemydetobj.vkpost.VkWebViewClient$VkPostTask.doInBackground(VkWebViewClient.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 минуты
на месте падает где пост запрос выполняется подскажите в чем дело??
Pablito
2410 / 1855 / 581
Регистрация: 12.05.2014
Сообщений: 6,591
Завершенные тесты: 1
21.05.2015, 11:36     Падает приложение для публикации вконтакте #16
вангую что ему не нравится ПРОБЕЛ после слова Hello
androbro
323 / 283 / 59
Регистрация: 17.10.2014
Сообщений: 835
21.05.2015, 11:43     Падает приложение для публикации вконтакте #17
Паблито, я вот щас попробовал - в ответ пришло:
XML
1
{"response":{"post_id":485}}
это типа я уже что то запостил?))
yura91, есть там что на стене то?))
Pablito
21.05.2015, 11:46
  #18

Не по теме:

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

yura91
29 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,238
21.05.2015, 11:47  [ТС]     Падает приложение для публикации вконтакте #19
да есть а как ты сделал?как исправить код?

Добавлено через 26 секунд
удалить пробел просто??
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2015, 11:49     Падает приложение для публикации вконтакте
Еще ссылки по теме:
Приложение падает когда шапка Navigation Drawer Activity пропадает из виду Android
Приложение не может пройти авторизацию вконтакте Android
Android Как приложение Вконтакте узнаёт о новом сообщении?
Android Одно приложение вконтакте работает, а второе нет
Android Возможно ли использовать разные аккаунты для публикации и рекламы?

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

Или воспользуйтесь поиском по форуму:
androbro
323 / 283 / 59
Регистрация: 17.10.2014
Сообщений: 835
21.05.2015, 11:49     Падает приложение для публикации вконтакте #20
Паблито, http://vk.com/id41024374 посты идут

Добавлено через 56 секунд
yura91, эт тебе урок, так как не надо токен свой сливать
Yandex
Объявления
21.05.2015, 11:49     Падает приложение для публикации вконтакте
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru