Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,326
1

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

19.05.2015, 18:51. Просмотров 1214. Ответов 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 минут
там время жизни на токен равно нулю может поэтому??
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2015, 18:51
Ответы с готовыми решениями:

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

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

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

Приложение с ListView падает с NullPointerException
Нужно было создать список с помощью ListView (На одной странице вводится...

Приложение падает на старых версиях OS
Ещё раз привет. Ещё один крик души. * Не беспокойтесь, я не буду сливать...

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

Решение

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

Решение

Ну так запросы в сеть надо в отдельном потоке делать, это разжовано стописят раз уже.
http://developer.alexanderklimov.ru/android/theory/asynctask.php
0
Pablito
2732 / 2167 / 735
Регистрация: 12.05.2014
Сообщений: 7,586
Завершенные тесты: 1
20.05.2015, 08:55 4
Лучший ответ Сообщение было отмечено yura91 как решение

Решение

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

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

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

Добавлено через 1 минуту
В логи все чистые почему в них не выводится ошибка? Может еще с утилитой adb что то??
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
20.05.2015, 19:33 14
Eclipse?
0
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,326
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?uid=41024374&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 минуты
на месте падает где пост запрос выполняется подскажите в чем дело??
0
Pablito
2732 / 2167 / 735
Регистрация: 12.05.2014
Сообщений: 7,586
Завершенные тесты: 1
21.05.2015, 11:36 16
вангую что ему не нравится ПРОБЕЛ после слова Hello
1
androbro
343 / 303 / 68
Регистрация: 17.10.2014
Сообщений: 898
21.05.2015, 11:43 17
Паблито, я вот щас попробовал - в ответ пришло:
XML
1
{"response":{"post_id":485}}
это типа я уже что то запостил?))
yura91, есть там что на стене то?))
0
Pablito
21.05.2015, 11:46
  #18

Не по теме:

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

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

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

Добавлено через 56 секунд
yura91, эт тебе урок, так как не надо токен свой сливать
0
21.05.2015, 11:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2015, 11:49

Приложение падает при включении блютуз
Здравствуйте. Я первый раз работаю с блютуз в андроид. Запустил приложение, а...

Падает приложение сразу после on Create
import android.app.Activity; import android.content.Context; import...

OpenGL наложение текстуры, падает приложение
после того как выполняю gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

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