połącz socket na porcie 80 nie działa dla wszystkich http!!!

0

Nie wiem dlaczego w niektórych przypadkach server http nie odpowiada na żądania. jako zapytanie wysyłam to samo co przegladarka(bo przechwyciłem jej zapytanie. Dla większości stron działa jednak są takie jak np. <url>www.dom.pl</url> ,która nie odpowiada na zapytanie, a pzegladarka normalnie ją wyświetla wysyłając to samo zapytanie co ja????
Gdzie tkwi problem???

Poniższy kod bedzie działał jeśli zamienimy www.dom.pl na inną stronę np. www.wp.pl , www.o2.pl, www.google.pl.

Nie chce wykorzystywac URL bo w swoim programie docelowym komunikuje się na pozimie strumieni bajtów. Z GóRY DZIEKUJE ZDOLNYM PROGRAMISTą.....


String zapytanie = "GET http://www.dom.pl/ HTTP/1.1"
        +"\r\n"+"Host: www.dom.pl"
        +"\r\n"+"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12"
        +"\r\n"+"Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"
        +"\r\n"+"Accept-Language: pl,en-us;q=0.7,en;q=0.3"
        +"\r\n"+"Accept-Encoding: gzip,deflate"
        +"\r\n"+"Acept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7"
        +"\r\n"+"Keep-Alive: 300"
        +"\r\n"+"Proxy-Connection: keep-alive"
        +"\r\n\r\n";


try {
            Socket socket = new Socket(InetAddress.getByName("www.dom.pl"), 80);
            
            in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
            String temp = null;
            out.write(zapytanie);
            out.flush();
            if( (temp = in.readLine()) != null )
                zawartosc.append(temp);
            else
                zawartosc.append("pusta linia\n");

            System.out.println(zawartosc);
            zawartosc.append("\n\nto cos2:\n)");
            System.out.println(zawartosc);
            
            
            } catch (Exception e) {
                zawartosc.append("server blad odpowiada"+e.getMessage());
                System.out.println(zawartosc);
        }
0

Sprawdź, czy strona nie zwraca przekierowania - przeglądarka za nim podąża; być może Twój kod nie.

0
Szczawik napisał(a)

Sprawdź, czy strona nie zwraca przekierowania - przeglądarka za nim podąża; być może Twój kod nie.

W tym problem, że server nie zwraca nic nawet statusu bledu, jakiejkolwiek inforamcji. Po prostu bardzo mi zależy żeby rozpoznać ten przypadek. Dzieki za trop, ale już nad tym siedze i nie wiem któredy podażać bo nie ma żadnego śladu. Server przyjmuje połączenie na porcie 80 ale nie chce zwrócić jakiejkolwiek odpowiedzi.... Port 8080 zwraca timeout, ale port 80 jest ok.

Ktoś ma jeszcze jakieś pomysły??? Sa bardzo mie widziane! Z góry dzięki. pozdrawiam

Pewnie jakiś dziwny pzypadek bo nawet łącząc sie telnetem na port 80 server nic nie che odpowiedzieć, gdy dla innych stron odpowiada.

0

Dzięki już znalazłem mały ślad, choć wymaga jeszcze rozgryzienia. Ogólnie można użyć http://web-sniffer.net do analizowania stron.

Właściwie dziwi mnie dlaczego praktycznie dla wiekszosci dziala a dla niektorych nie. Musze chyba wgryzc sie mocniej w specyfikacje http, ktora juz niezle obcykalem ale jeszcze zostalo kkilka zapewne szczegolnych przypadkow.

Pozdrawiam wszystkich!

1 użytkowników online, w tym zalogowanych: 0, gości: 1