Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Citanje podataka sa interneta

[es] :: Java :: Citanje podataka sa interneta

[ Pregleda: 1604 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Seme
Miroslav Bozic
Nis
Elektronski fakultet
Nis, Zajecar

Član broj: 43158
Poruke: 390
*.vdial.verat.net.

Sajt: www.ebuyelektronika.co.cc


+5 Profil

icon Citanje podataka sa interneta09.01.2007. u 22:17 - pre 211 meseci
Imam sledeci zadatak za projekat:
Potrebno je napisati program u Javi koji ce moci da prikaze dnevni sadrzaj tv programa.Kao izvor se koristi sajt www.krstarica.com.Moja ideja je da skinem kompletan kod stranice za odredjeni kanal a nakon toga da iz njega izvucem emisije.Za www.rts.co.yu sam to uradio bez problema dok za krstaricu nikako ne uspevam.Primetio sam da je kao port za rts naveden 80,da li je tu problem,mozda za com treba drugi port.Stranici u javi pristupam preko socet - a.Ne znam koliko sam bio jasan ispravite me ako negde gresim.Pomagajte.Pozdrav.
 
Odgovor na temu

SluX

Član broj: 77091
Poruke: 56
*.dynamic.sbb.co.yu.



Profil

icon Re: Citanje podataka sa interneta09.01.2007. u 23:34 - pre 211 meseci
Da li mozes da navedes u cemu je problem?

Ok je sa soketima, ali koliko se secam imaju i neke specijalne http klase...ne znam koje tacno...
 
Odgovor na temu

Seme
Miroslav Bozic
Nis
Elektronski fakultet
Nis, Zajecar

Član broj: 43158
Poruke: 390
*.vdial.verat.net.

Sajt: www.ebuyelektronika.co.cc


+5 Profil

icon Re: Citanje podataka sa interneta09.01.2007. u 23:40 - pre 211 meseci
Naredni kod pisan je za skidanje html koda stranice cije je link naveden,i on radi:
Code:

import java.io.*;
import java.net.*;
import java.util.*;


public class HTTPClient {
    public static void main(String args[]) throws Exception {
        String link;
        String r;
        link = "GET /kategorija_program.asp?redosled=prioritet&Category=xtv1sema HTTP/1.0\r\n";
            
            Socket clientSocket = new Socket("www.rts.co.yu", 80);
            DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
            DataInputStream dataFromServer = new DataInputStream(clientSocket.getInputStream());
                        
            outToServer.writeBytes(link);// Formiranje zahteva
            outToServer.writeBytes("Accept: text/html,text/php\r\n");
            outToServer.writeBytes("\r\n");
            BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            r = inFromServer.readLine();
            StringTokenizer tr = new StringTokenizer(r);
            tr.nextToken();
            if(tr.nextToken().equals("200")) // Provera kodova gresaka
                {
                    while(!r.equals("</html>"))
                    {
                        r = inFromServer.readLine();
                        System.out.println(r);
                    }
                }
        }
}


Problem je u tome sto kad kao web stranu navedem www.krstarica.com
a link stavim GET /lat/tv/index.php?kanal=pink HTTP/1.0\r\n
nece da funkcionise,dok za gore navedene linkove radi kako treba.

Code:

import java.io.*;
import java.net.*;
import java.util.*;


public class HTTPClient {
    public static void main(String args[]) throws Exception {
        String link;
        String r;
        link = [red]"GET /lat/tv/index.php?kanal=pink HTTP/1.0\r\n"[/red];
            
            Socket clientSocket = new Socket("[red]www.krstarica.com [/red]", 80);
            DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
            DataInputStream dataFromServer = new DataInputStream(clientSocket.getInputStream());
                        
            outToServer.writeBytes(link);// Formiranje zahteva
            outToServer.writeBytes("Accept: text/html,text/php\r\n");
            outToServer.writeBytes("\r\n");
            BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            r = inFromServer.readLine();
            StringTokenizer tr = new StringTokenizer(r);
            tr.nextToken();
            if(tr.nextToken().equals("200")) // Provera kodova gresaka
                {
                    while(!r.equals("</html>"))
                    {
                        r = inFromServer.readLine();
                        System.out.println(r);
                    }
                }
        }


[Ovu poruku je menjao Seme dana 10.01.2007. u 11:21 GMT+1]

[Ovu poruku je menjao hyle dana 10.01.2007. u 16:14 GMT+1]
 
Odgovor na temu

SluX

Član broj: 77091
Poruke: 56
*.dynamic.sbb.co.yu.



Profil

icon Re: Citanje podataka sa interneta10.01.2007. u 11:29 - pre 211 meseci
Kod izgleda ok..da li pukne neki exception ili sta?
VIdim da ti samo proveravas za kod 200...mozda ti krstarica posalje neki drugi...

Ne vidim razlog da ne radi sem tog koda....ili ako vec pukne neki exception.....
Probaj da ispises bilo sta sto ti krstarica posalje...
 
Odgovor na temu

Seme
Miroslav Bozic
Nis
Elektronski fakultet
Nis, Zajecar

Član broj: 43158
Poruke: 390
212.200.182.*

Sajt: www.ebuyelektronika.co.cc


+5 Profil

icon Re: Citanje podataka sa interneta10.01.2007. u 16:48 - pre 211 meseci
Upravu si kada sam kod promenio na 302 zahtev je ostvaren medjutim umesto stampanja koda stranice odstampa mi sledece:

Date: Wed, 10 Jan 2007 17:27:09 GMT
Server: Apache/1.3.37
X-Powered-By: PHP/4.4.3
Location: /
Connection: close
Content-Type: text/html

java.lang.NullPointerException
at HTTPClient.main(HTTPClient.java:27)
null
Exception in thread "main"

Da li je moguce da sajt ima neku zastitu.Pokusao sam da skinem kod za pink i jos neke sajtove i uspeo sam.Ne razumem sta je sa krstaricom.

[Ovu poruku je menjao Seme dana 10.01.2007. u 18:28 GMT+1]
 
Odgovor na temu

SluX

Član broj: 77091
Poruke: 56
*.dynamic.sbb.co.yu.



Profil

icon Re: Citanje podataka sa interneta10.01.2007. u 19:50 - pre 211 meseci
OK pazi ovako:da pises tako ceo metod sa throws exception bas i nije najsjajnije.
Ne znam koliko se razumes u http protokol i njegove status kodove, ali kod 302 znaci da lokacija koju trazis postoji, ali da treba da se izvrsi redirekcija. Takodje, da bi se redirekcija izvrsila, kao response ti se salje Location-adresa na koju treba da se redirektuje klijent koji trazi stranu(mada vidim da je to kod tebe samo / :S).

Ako te zanima jos o http protokolu(a moralo bi cim to radis), overi google ili npr http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
Takodje vidim da ti salje status Connection: close, tako da pretpostavljam da koriste http 1.0, a ne 1.1(ako se dobro secam gradiva iz mrezza ;)).To u sustini znaci da opet moras da otvaras konekciju posle svakog zahteva(to je njesra, znam :().

Nadam se da ti je ovo malo pomoglo.
 
Odgovor na temu

Seme
Miroslav Bozic
Nis
Elektronski fakultet
Nis, Zajecar

Član broj: 43158
Poruke: 390
*.vdial.verat.net.

Sajt: www.ebuyelektronika.co.cc


+5 Profil

icon Re: Citanje podataka sa interneta11.01.2007. u 10:51 - pre 211 meseci
Hvala puno na pomoci resio sam problem.Stavio sam kompletnu web adresu za link i sve je proradiolo.
 
Odgovor na temu

[es] :: Java :: Citanje podataka sa interneta

[ Pregleda: 1604 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.