Авторизация и парсинг сайта

Ответить
complexityclass
Сообщения: 3
Зарегистрирован: 11 дек 2012, 10:53

Авторизация и парсинг сайта

Сообщение complexityclass » 11 дек 2012, 11:07

Добрый день.

Пишу приложение для использования сайта с андроид устройства.
Есть url сайта (html) и url скрипта авторизации(php)
Отправляю post запрос на url скрипта и получаю ответ - xml вида

Код: Выделить всё

<?xml version="1.0" encoding="utf-8"?><resp status="1" uD="John" UID="2" e=""/>
Собственно не могу понять, что делать с этим ответом, чтобы потом парсить с помощью Jsoup страницы видные авторизованным пользователям.

Заранее спасибо.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Авторизация и парсинг сайта

Сообщение rezak90 » 11 дек 2012, 20:01

На пхп и пёрл писал парсеры то ещё терпимо было (особенно на пёрл), но писать парсер на андроиде это тоже самое что строить дом на песке. Не для андроида эта задача. Если для себя пишете это одно и ваш велосипед это ваш велосипед, если заказчик заказал для своего сайта и не предоставил апи то заказчик идиот.
По делу. То что возвращает скорее всего: статус = 1 значит авторизация прошла успешно, имя джон и какой то уид что скорее всего является сессией или что то в этом роде. Для дальнейшего хождения по страницам сайта нужно сохранять куки и при следующем пост запросе отправлять пост с куками.
R.id.team
Политика на форуме запрещена

Аватара пользователя
neoksi
Сообщения: 712
Зарегистрирован: 26 июл 2012, 10:42
Контактная информация:

Re: Авторизация и парсинг сайта

Сообщение neoksi » 12 дек 2012, 04:59

Соглашусь с rezak90. Парсинг текста слишком ресурсоемкий процесс для Андроида на ARM архитектуре.

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Авторизация и парсинг сайта

Сообщение damager82 » 14 дек 2012, 10:38

complexityclass писал(а):Собственно не могу понять, что делать с этим ответом, чтобы потом парсить с помощью Jsoup страницы видные авторизованным пользователям.
Вопрос скорее к админам сайта, или вы без их участия прогу пишете?
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Аватара пользователя
krjakov
Сообщения: 11
Зарегистрирован: 23 июл 2012, 14:49

Re: Авторизация и парсинг сайта

Сообщение krjakov » 23 фев 2013, 00:05

привет. помогите выпрямить руки.

Код: Выделить всё

import org.jsoup.*; import org.jsoup.nodes.*; import org.jsoup.parser.Parser; import org.jsoup.select.*; 
import org.w3c.dom.NodeList; 
import java.io.*; 
public class testParse { public static void main(String[] args) throws IOException 
{ Document doc = Jsoup.connect("http://htmlbook.ru/").get(); 
// System.out.println(doc); 
Elements links = doc.getElementsByTag("li"); 
for(Element link : links) { System.out.println(link.text()); 
}} }]
Друзья, помогите.
как это закодить в Андроиде, чтобы он мне элементы линк, выдавал... хм предположим, в список, хотя бы просто в текст.
Где то нагуглил про поток. пытался сделать, не получается. стою на это проблеме уже вторые сутки =\
а то на поптыки законектить по ссылке, он меня выкидывает. Вариант с разрешением на интернет в манифесте не предлагать)
хтмлбук для примера сайт.
к критике отношусь хорошо, если кто подскажет нормальный метод выдёргивания элементов из списка буду рад
спасибо
krja-krja

Аватара пользователя
krjakov
Сообщения: 11
Зарегистрирован: 23 июл 2012, 14:49

Re: Авторизация и парсинг сайта

Сообщение krjakov » 23 фев 2013, 20:28

http://developer.alexanderklimov.ru/and ... hp#sample1
делаю всё по правилам. копипастю

Код: Выделить всё

package com.example.ebala;
import org.jsoup.Jsoup;
 import org.jsoup.nodes.Document;
 import android.app.Activity; 
import android.os.Bundle;
 import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener;
 import android.widget.Button; 
import android.widget.TextView; 
public class MainActivity extends Activity 
{ /** Called when the activity is first created. */
 @Override public void onCreate(Bundle savedInstanceState) 
{ super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main);
 final Button butTest = (Button)findViewById(R.id.button1);
 final TextView tvInfo = (TextView)findViewById(R.id.textView1);
 butTest.setOnClickListener(new OnClickListener() 
{ @Override public void onClick(View v) 
{ String html = "<html><head><title>Коты учатся кодить</title>" + "<body><p>Коты умеют <del>ш</del>кодить.<br> Они великие программисты." + "<p>А еще они умеют мяукать.</p>" + "<a href='http://developer.alexanderklimov.ru'>Подробности здесь</a>" + "</body></html>"; 
Log.d("log", "log");
[color=#FF0000] Document doc = Jsoup.parse(html);[/color] 
Log.d("log", "log2"); 
tvInfo.setText(doc.html());
 Log.d("log", "log3");
 } }); } }]
выполняется до первого лога и выползает ошибка
02-23 17:26:29.648: D/dalvikvm(691): VFY: dead code 0x000c-0024 in Lcom/example/ebala/MainActivity$1;.onClick (Landroid/view/View;)V
02-23 17:26:34.698: D/log(691): log
02-23 17:26:34.698: D/AndroidRuntime(691): Shutting down VM
02-23 17:26:34.698: W/dalvikvm(691): threadid=1: thread exiting with uncaught exception (group=0x40015560)
02-23 17:26:34.719: E/AndroidRuntime(691): FATAL EXCEPTION: main
02-23 17:26:34.719: E/AndroidRuntime(691): java.lang.NoClassDefFoundError: org.jsoup.Jsoup
02-23 17:26:34.719: E/AndroidRuntime(691): at com.example.ebala.MainActivity$1.onClick(MainActivity.java:35)
02-23 17:26:34.719: E/AndroidRuntime(691): at android.view.View.performClick(View.java:2485)
02-23 17:26:34.719: E/AndroidRuntime(691): at android.view.View$PerformClick.run(View.java:9080)
02-23 17:26:34.719: E/AndroidRuntime(691): at android.os.Handler.handleCallback(Handler.java:587)
02-23 17:26:34.719: E/AndroidRuntime(691): at android.os.Handler.dispatchMessage(Handler.java:92)
02-23 17:26:34.719: E/AndroidRuntime(691): at android.os.Looper.loop(Looper.java:123)
02-23 17:26:34.719: E/AndroidRuntime(691): at android.app.ActivityThread.main(ActivityThread.java:3683)
02-23 17:26:34.719: E/AndroidRuntime(691): at java.lang.reflect.Method.invokeNative(Native Method)
02-23 17:26:34.719: E/AndroidRuntime(691): at java.lang.reflect.Method.invoke(Method.java:507)
02-23 17:26:34.719: E/AndroidRuntime(691): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-23 17:26:34.719: E/AndroidRuntime(691): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-23 17:26:34.719: E/AndroidRuntime(691): at dalvik.system.NativeStart.main(Native Method)
02-23 17:26:36.959: I/Process(691): Sending signal. PID: 691 SIG: 9
krja-krja

Аватара пользователя
Finch
Сообщения: 439
Зарегистрирован: 16 июл 2012, 21:37

Re: Авторизация и парсинг сайта

Сообщение Finch » 23 фев 2013, 22:52

Гугл поможет
П.С. а имя пакета порадовало =) package com.example.ebala;
CEO of a company R.id.team

Ответить