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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.85
Kazachek
15 / 15 / 2
Регистрация: 03.11.2013
Сообщений: 337
#1

Автозаполнение форм или же HTTP base авторизация с логином и паролем - Android

07.02.2014, 11:00. Просмотров 2603. Ответов 24
Метки нет (Все метки)

Всем добрый день.

Хочу написать приложения которое будет отправлять запрос и получать ответ в виде xml. Но сервер защищен HTTP авторизацией. При прямом отправке запроса выдает ошибку что я не авторизован, а если открыть страницу запроса в браузере то выползает окно авторизации, можно ли как то программно ввести туда логин и пароль или же во время отправки запроса как то указать мой логин и пароль.

Добавляю скриншоты для понимания вопроса.

Заранее благодарю всех за ответы и помощь
Миниатюры
Автозаполнение форм или же HTTP base авторизация с логином и паролем  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2014, 11:00     Автозаполнение форм или же HTTP base авторизация с логином и паролем
Посмотрите здесь:

Android Скроллинг форм
Авторизация на сайте: "java.lang.Exception: http error : 401" Android
Автозаполнение AutoCompleteTextView. Что такое groceryDb? Android
Http server Android
Android SQLite база данных с паролем
Буферизация форм в сервисе Android
Data Base ошибка при записи Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kazachek
15 / 15 / 2
Регистрация: 03.11.2013
Сообщений: 337
07.02.2014, 13:11  [ТС]     Автозаполнение форм или же HTTP base авторизация с логином и паролем #2
Нашел одну тему в другом форуме, но не могу понять как это сделать помогите пожалуйста, там все описано, просто подскажите куда URL логин и пароль прописать чтоб у меня оно заработало.
Спасибо
http://androidforums.ru/topic/8413-%...051#entry62051

Добавлено через 1 час 40 минут
Kazachek
15 / 15 / 2
Регистрация: 03.11.2013
Сообщений: 337
07.02.2014, 14:08  [ТС]     Автозаполнение форм или же HTTP base авторизация с логином и паролем #3
Попытался в WebView загрузить эту страницу, чтоб хотябы с ручным вводом логина и пароля работала, но она совсем не хочет открывать
Миниатюры
Автозаполнение форм или же HTTP base авторизация с логином и паролем  
Kazachek
15 / 15 / 2
Регистрация: 03.11.2013
Сообщений: 337
07.02.2014, 15:31  [ТС]     Автозаполнение форм или же HTTP base авторизация с логином и паролем #4
Покопался нашел еще один пример и совет, но не могу разобраться помогите пожалуйста.

http://www.mail-archive.com/android-.../msg30468.html

Добавлено через 24 секунды
Kazachek
15 / 15 / 2
Регистрация: 03.11.2013
Сообщений: 337
09.02.2014, 03:22  [ТС]     Автозаполнение форм или же HTTP base авторизация с логином и паролем #5
не справляюсь, нужна помощь отзовитесь пожалуйста
Ismoil
-8 / 10 / 4
Регистрация: 18.12.2012
Сообщений: 81
09.02.2014, 12:44     Автозаполнение форм или же HTTP base авторизация с логином и паролем #6
http://www.mkyong.com/java/how-to-se...tpost-in-java/
почитай здесь

Добавлено через 6 минут
отправь скриншоты xml файла вопрос полностью не раскрыт))
YuraAAA
1564 / 1306 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
09.02.2014, 17:03     Автозаполнение форм или же HTTP base авторизация с логином и паролем #7
Kazachek, отправляете POST или GET (зависит от сервера) запрос на авторизацию, в боди запроса указываете параметры логина. После этого сервер должен вернуть Вам какой-нибудь token. Следующие запросы должны идти с этим токеном в header. По нему сервер будет Вас узнавать.
Kazachek
15 / 15 / 2
Регистрация: 03.11.2013
Сообщений: 337
09.02.2014, 17:08  [ТС]     Автозаполнение форм или же HTTP base авторизация с логином и паролем #8
Извините сейчас сделать скрин не мошу так как нахожусь в дали от компа, на данный момент проблема в другом окошко для ввода логина и пароля которая отображается в браузере не отображается в webview. Вебвью сразу выдает ошибку 401 не выводя окошку для ввода логина и пароля. Код программы прост, там я указал вебвью какую страницу открыть

Добавлено через 2 минуты
Цитата Сообщение от YuraAAA Посмотреть сообщение
Kazachek, отправляете POST или GET (зависит от сервера) запрос на авторизацию, в боди запроса указываете параметры логина. После этого сервер должен вернуть Вам какой-нибудь token. Следующие запросы должны идти с этим токеном в header. По нему сервер будет Вас узнавать.
Можете поделиться примером или ссылкой, если есть под рукой
Ismoil
-8 / 10 / 4
Регистрация: 18.12.2012
Сообщений: 81
10.02.2014, 14:17     Автозаполнение форм или же HTTP base авторизация с логином и паролем #9
как сказал Юра , http get zaprosi отправляешь на удаленный сервер не знаю как у тебя у меня был такой пример я его выполнил хочешь скину данные)))

Добавлено через 9 минут
public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {
EditText users=(EditText)findViewById(R.id.editText1);
EditText pass=(EditText)findViewById(R.id.editText2);


String f = "";
if(users.getText()!=null&&pass.getText()!=null)
{
try {
//MD5
f = MD5("Шифруешь пароль если хочешь" + users.getText().toString() + MD5(pass.getText().toString()));
String url = "http://твой url?users="+users.getText().toString()+"&pass= "+pass.getText()+" "+f;
URL obj;
obj = new URL(url);
HttpURLConnection con;
con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");

BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();

while ((inputLine = in.readLine()) != null) {
response.append(inputLine);

}

if(!response.substring(0, 1).toString().equals("#"))
{
Intent myIntent = new Intent(getBaseContext(), Secondactivity.class);
myIntent.putExtra("users",response.toString());
//myIntent.putExtra("pass",pass.getText().toString());
startActivity(myIntent);
finish();
}
else
{
Toast.makeText(getBaseContext(), "Не верный логин или пароль",Toast.LENGTH_LONG).show();
}

in.close();

}

catch (IOException e) {
Toast.makeText(getBaseContext(), "Tost: "+e.getMessage(), Toast.LENGTH_LONG).show();
e.printStackTrace();
e.getMessage();
}





}

}
});

Добавлено через 57 секунд
а в xml файле разберешься сам не упрощать тебе работу ну я уже упростил))

Добавлено через 3 минуты
http://androidexample.com/How_To_Mak...aid=63&aaid=88
вот пример самый простой))
Kazachek
15 / 15 / 2
Регистрация: 03.11.2013
Сообщений: 337
10.02.2014, 15:10  [ТС]     Автозаполнение форм или же HTTP base авторизация с логином и паролем #10
Спасибо за советы, очень полезная вещь, но возможно я не так задал свой вопрос, что вы не понимаете чего я хочу.

Есть страничка при открытии которой выползает окно авторизации (базовая HTTP авторизация). При открытии в браузере планшета, окно для ввода логина и пароля отображается а если указать тот же URL в WebView то окошко не появляется и сразу сервер отправляет 401 ошибку авторизации которую показал выше на картинках.

Задача: Сделать так чтоб в WebView отображалось окно для ввода логина и пароля чтоб дальше можно было работать со страничкой. В php файле менять ничего не нужно, так как с компьютера и с браузера все работает нормально. Проблема именно в WebView.

Пожалуйста помогите решить проблему так как уже который день пытаюсь его решить но у меня не получается. Заранее благодарю всех за содействие.
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
10.02.2014, 15:39     Автозаполнение форм или же HTTP base авторизация с логином и паролем #11
может вы забываете подключить к webview выполнения скриптов?
Kazachek
15 / 15 / 2
Регистрация: 03.11.2013
Сообщений: 337
10.02.2014, 15:44  [ТС]     Автозаполнение форм или же HTTP base авторизация с логином и паролем #12
Цитата Сообщение от NiRamz Посмотреть сообщение
ожет вы забываете подключить к webview выполнения скриптов?
Вроде подключил выполнение скриптов

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
package com.example.autorization;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.webkit.WebView;
 
public class MainActivity extends Activity {
    
    private WebView webView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    
        webView = (WebView) findViewById(R.id.webView1);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.loadUrl("http://10.84.33.88/freenums/build/package/SelfCareTablet/index.html");
    
}
 
    
    
    
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
 
}
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
10.02.2014, 16:32     Автозаполнение форм или же HTTP base авторизация с логином и паролем #13
хм, попробывал из браузера открыть ссылку что забита в коде, хром сказал что не может найти страницу. Проверьте правильность самого адреса, мб где то опечатку допустили?
Kazachek
15 / 15 / 2
Регистрация: 03.11.2013
Сообщений: 337
10.02.2014, 18:25  [ТС]     Автозаполнение форм или же HTTP base авторизация с логином и паролем #14
NiRamz, ссылка внутренная, подключение идет по VPN каналу. С внешних каналов нет доступа в целях безопастности. Приложение для организации в которой работаю.

Добавлено через 53 минуты
Так и не нашел решение. Но думаю есть и обходной вариант, отправить запрос программно, получить ответ и записать его в куки, а куки присвоить WebView? что думаете на счет этого?
Нашел одну статью с присвоением куки, но там у меня опять не получается в одной строке ошибка ни как не могу разобраться как ее решить (PersistentConfig) . Пожалуйста помогите разобраться с этой проблемой, если есть фрилансеры которые за деньги помогут пожалуйста посоветуйте их просто уже 5 день с одной и той же проблемой.

http://code.walletapp.net/post/46414...kie-to-webview
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
10.02.2014, 18:27     Автозаполнение форм или же HTTP base авторизация с логином и паролем #15
скиньте лог ошибки, посмотрим
Kazachek
15 / 15 / 2
Регистрация: 03.11.2013
Сообщений: 337
10.02.2014, 19:43  [ТС]     Автозаполнение форм или же HTTP base авторизация с логином и паролем #16
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
package com.example.autorization;
 
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.Menu;
import android.webkit.CookieManager;
import android.webkit.CookieSyncManager;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
 
public class MainActivity extends Activity {
    
    WebView myWebView;
    private final static String TAG = "WebView";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    
        myWebView = (WebView) findViewById(R.id.webView1);
        new WebViewTask().execute();
    }
 
    private class WebViewTask extends AsyncTask<Void, Void, Boolean> {
    String sessionCookie;
    CookieManager cookieManager;
 
        @Override
    protected void onPreExecute() {
        CookieSyncManager.createInstance(MainActivity.this);
        cookieManager = CookieManager.getInstance();
                    
        sessionCookie = new persistedConfig(getApplicationContext()).getCookieString();
        if (sessionCookie != null) {
                            /* delete old cookies */
            cookieManager.removeSessionCookie(); 
        }
        super.onPreExecute();
    }
    protected Boolean doInBackground(Void... param) {
                    /* this is very important - THIS IS THE HACK */
        SystemClock.sleep(1000);
        return false;
    }
    @Override
    protected void onPostExecute(Boolean result) {
        if (sessionCookie != null) {
            cookieManager.setCookie("yourdomain.com", sessionCookie);
            CookieSyncManager.getInstance().sync();
        }
        WebSettings webSettings = myWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setBuiltInZoomControls(true);
        myWebView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                return super.shouldOverrideUrlLoading(view, url);
            }
            
        });
        myWebView.loadUrl("https://yourdomain.com/anything");
    }
}
 
    
    
    
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
 
}
Миниатюры
Автозаполнение форм или же HTTP base авторизация с логином и паролем  
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
10.02.2014, 20:05     Автозаполнение форм или же HTTP base авторизация с логином и паролем #17
Наведите курсор на persiitedconfig и посмотрите что он вам пишет
Kazachek
15 / 15 / 2
Регистрация: 03.11.2013
Сообщений: 337
10.02.2014, 20:59  [ТС]     Автозаполнение форм или же HTTP base авторизация с логином и паролем #18
Цитата Сообщение от NiRamz Посмотреть сообщение
Наведите курсор на persiitedconfig и посмотрите что он вам пишет
Вот что он пишет при наведении курсора
Миниатюры
Автозаполнение форм или же HTTP base авторизация с логином и паролем  
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
10.02.2014, 21:22     Автозаполнение форм или же HTTP base авторизация с логином и паролем #19
Пишет что у вас такого класса нет, прочитайте еще раз пример и посмотрите все ли верно записано
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2014, 07:58     Автозаполнение форм или же HTTP base авторизация с логином и паролем
Еще ссылки по теме:

Data Base in android Android
Android Http библиотеки
Android Зайти на сайт с логином и паролем | android studio
Android Как правильно организовать переход с одного активити на другое с паролем
Android Конструктор форм

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

Или воспользуйтесь поиском по форуму:
Kazachek
15 / 15 / 2
Регистрация: 03.11.2013
Сообщений: 337
11.02.2014, 07:58  [ТС]     Автозаполнение форм или же HTTP base авторизация с логином и паролем #20
Там про класс ничего не написано. Нет ли у вас подобного примера? Вообще пральный ли выбранный мною метод?

Добавлено через 8 часов 59 минут
Не ужели с этой задачей мы не можем справиться вместе? Не ужели никто из наших форумчан не сталкивался с этой проблемой? не ужели никто не будет пытаться решить проблему. Люди призываю всех давайте вместе решим проблему, пожалуйста.

Yandex
Объявления
11.02.2014, 07:58     Автозаполнение форм или же HTTP base авторизация с логином и паролем
Ответ Создать тему
Опции темы

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