С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
helpvits
0 / 0 / 0
Регистрация: 26.10.2015
Сообщений: 6
1

Куда вставить проверку капчи? Все данные внутри

15.10.2014, 15:55. Просмотров 452. Ответов 0
Метки нет (Все метки)

пилю прожку для вк простенькую для освоения програмирования и вроде все запускается и работает но вот уперся в реализацию капчи и чего я только не пробовал.
Вот код куска отвечающего за отправку сообщения.
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
package com.perm.kate.api.sample;
import com.perm.kate.api.Api;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
 
public class MainActivity extends Activity {
    
    private final int REQUEST_LOGIN=1;
    
    Button authorizeButton;
    Button logoutButton;
    Button postButton;
    EditText messageEditText;
    
    Account account=new Account();
    Api api;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        setupUI();
        
        //Восстановление сохранённой сессии
        account.restore(this);
        
        //Если сессия есть создаём API для обращения к серверу
        if(account.access_token!=null)
            api=new Api(account.access_token, Constants.API_ID);
        
        showButtons();
    }
 
    private void setupUI() {
        authorizeButton=(Button)findViewById(R.id.authorize);
        logoutButton=(Button)findViewById(R.id.logout);
        postButton=(Button)findViewById(R.id.post);
        messageEditText=(EditText)findViewById(R.id.message);
        authorizeButton.setOnClickListener(authorizeClick);
        logoutButton.setOnClickListener(logoutClick);
        postButton.setOnClickListener(postClick);
    }
    
    private OnClickListener authorizeClick=new OnClickListener(){
        @Override
        public void onClick(View v) {
            startLoginActivity();
        }
    };
    
    private OnClickListener logoutClick=new OnClickListener(){
        @Override
        public void onClick(View v) {
            logOut();
        }
    };
    
    private OnClickListener postClick=new OnClickListener(){
        @Override
        public void onClick(View v) {
            postToWall();
        }
    };
    
    private void startLoginActivity() {
        Intent intent = new Intent();
        intent.setClass(this, LoginActivity.class);
        startActivityForResult(intent, REQUEST_LOGIN);
    }
    
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQUEST_LOGIN) {
            if (resultCode == RESULT_OK) {
                //авторизовались успешно 
                account.access_token=data.getStringExtra("token");
                account.user_id=data.getLongExtra("user_id", 0);
                account.save(MainActivity.this);
                api=new Api(account.access_token, Constants.API_ID);
                showButtons();
            }
        }
    }
    
    private void postToWall() {
        //Общение с сервером в отдельном потоке чтобы не блокировать UI поток
        new Thread(){
            @Override
            public void run(){
                try {
                    String text=messageEditText.getText().toString();
                    api.createWallPost(account.user_id, text, null, null, false, false, false, null, null, null, 0L, null, null);
                    //Показать сообщение в UI потоке 
                    runOnUiThread(successRunnable);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }.start();
    }
    
    Runnable successRunnable=new Runnable(){
        @Override
        public void run() {
            Toast.makeText(getApplicationContext(), "Запись успешно добавлена", Toast.LENGTH_LONG).show();
        }
    };
    
    private void logOut() {
        api=null;
        account.access_token=null;
        account.user_id=0;
        account.save(MainActivity.this);
        showButtons();
    }
    
    void showButtons(){
        if(api!=null){
            authorizeButton.setVisibility(View.GONE);
            logoutButton.setVisibility(View.VISIBLE);
            postButton.setVisibility(View.VISIBLE);
            messageEditText.setVisibility(View.VISIBLE);
        }else{
            authorizeButton.setVisibility(View.VISIBLE);
            logoutButton.setVisibility(View.GONE);
            postButton.setVisibility(View.GONE);
            messageEditText.setVisibility(View.GONE);
        }
    }
}
Чтоб не казаться пройобиком который хочет получить код на халяву, я перепробывал различные методы вставок и комбинаций , по моему мнению необходимо чтобы эта проверка была в private void postToWall() и скорее всего даже после catch но как реализовать передачу данных об ошибке в public void onCaptchaError так и не догодался ((( помогите поэжалуйста начинающему дроид девелоперу :roll:
вот советы по ее использованию от ВК
VKError содержит свойство errorCode.
При проверке ошибок следует сначала проверить code на совпадение с глобальной константой VKError.VK_API_ERROR. Если это так, то необходимо обрабатывать поле apiError, которое содержит описание ошибки VK API.
Если же code не совпадает с VK_API_ERROR, то code содержит в себе http-код ошибки, и следует обрабатывать поле httpError.
Некоторые ошибки SDK может обработать сам (ошибка капчи, ошибка валидации). Для этого у делегата будут вызваны соответствующие методы.
Пример обработки в делегате ошибки, для которой требуется ввод капчи:
Java
1
2
3
public void onCaptchaError(VKError captchaError) { 
new VKCaptchaDialog(captchaError).show(); 
}
ЗЫ использую в основе андроид АПИ от самих вк https://github.com/thest1/Android-VK...nActivity.java

Добавлено через 4 часа 27 минут
Если какой то инфы не достаточно я предоставлю

Добавлено через 18 часов 59 минут
60+ просмотрев не ужели никто не в силах помочь?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2014, 15:55
Ответы с готовыми решениями:

Куда вставить готовый код в программе Android Studio?
Вставил код из "Урок 58" ссылка -...

Куда записать данные
Как сделать так чтобы при первом запуске приложения запрашивались логин и...

ViewPager внутри ListView, Как вставить?
Здравствуйте. Есть задача, внутри ListView сделать айтемы, которые содержат...

Куда лучше записыать временные данные (массив данных)
получаю много отчетов, например получил один отчет и потом ушел на вкладку...

Как реализовать проверку капчи?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2014, 15:55

После слета Винды куда-то пропали все данные жесткого диска.
В общем такая проблема,что был перепад напряжения и отключился комп. Блока...

Все данные в внутри цикла обнулились
Как можно сделать что бы в конце цикла все данные в внутри цикла обнулились.

Куда поставить проверку Get-ом?
Ребят, помогите пожалуйста, есть два файла html, которые обращаются вот к этому...


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

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

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