problem z Urlconnection i Operą

0

Witam.

Jestem autorem serwisu poświęconego Sudoku. Jednym z elementów jest applet do grania w Sudoku. Przy każdej grze łączy się on z bazą danych wykorzystując Urlconnection i wysyłając dane przez POST do pliku php.

Problem jest taki, że applet działa prawidłowo w IE, Firefoxie. Natomiast w Operze plik php jest wywoływany, niestety dane w POST gdzieś znikają ...

to kod appletu :

       try {
        // Dane do wyslania
       String data = URLEncoder.encode("userid", "UTF-8") + "=" + URLEncoder.encode(user, "UTF-8");
       data += "&" + URLEncoder.encode("lvl", "UTF-8") + "=" + URLEncoder.encode(lvl, "UTF-8");
       
        // Wysylanie danych
        URL u = new URL("http://www.sudoku.picante.pl/insert.php");
        URLConnection uc = u.openConnection();
        uc.setDoOutput(true);
        PrintWriter pw = new PrintWriter(uc.getOutputStream());
        pw.println(data);
        pw.close();

        //Odczyt danych
        BufferedReader in = new BufferedReader(
        new InputStreamReader(uc.getInputStream()));
        res = in.readLine();
        System.out.println(res);  
    } catch (Exception e) {
        System.out.println("Blad"+e.getMessage());
    }
        return(res);
    }
0

Sprawdź czy w ustawieniach nie ma gdzieś czegoś co rządzi pozwoleniami na komunikację Aplet - serwer. Co gdzie i jak nie powiem bo opery nie znam...

0

Sprawdzałem ustawienia Opery. Można w niej włączyć - wyłączyć obsługę Javy. I to wszystko. Problem polega dokładnie na tym, że plik jest uruchamiany i tworzy nowy wpis w bazie. NIestety opera nie wysyła danych do pliku php. tabele POST i GET sa puste....

EDIT

Myślałem, myślałem aż wymyśliłem :-)

Zamiast uzywać wysyłania danych przez POST wykorzystałem metodę GET. Ten sposób jest łatwiejszy, bo wymaga dodania tylko po znaku ? danych w parach. Dodajemy to do adresu i wywołujemy URLconnection :)

Kod po zmianach wygląda tak :

        // Dane polaczenia
        String data = "?userid="+user+"&lvl="+lvl;
        String adres = "http://www.sudoku.picante.pl/insert.php" + data;
        // polaczenie z baza
        URL u = new URL(adres);
        URLConnection uc = u.openConnection();
        uc.setDoOutput(true);
        uc.setUseCaches (false); 
        uc.connect();
        //Odczyt danych
        BufferedReader in = new BufferedReader(
        new InputStreamReader(uc.getInputStream()));
        res = in.readLine();
        System.out.println(res);  
0

i ok bo w ten sposób można wysyłać niewielkie ilości danych, do 4kb - długość urla :)
Dziwię się tylko dlaczego używasz na serwerze phpa. Nie łatwiej Javy i wystawienie wszystkich potrzebnych danych przez webservice?

0

Nigdy nie pisałem webservice'a. W php bardziej jestem zaawansowany :)

Na początku próbowałęm wykorzystać jdbc, ale nie zdało to egzaminu w moim przypadku - zbyt duży pakiet ze sterownikiem - był 4 raz większy od samego appletu.

Mógłbyś krótko nakreślić, jak zrobic takiego wenbervica :) ?

0

generalnie web service działa w ten sposób, że serwer udostępnia jakieś API, zazwyczaj jest to protokół do transmisji danych. Następnie dowolna aplikacja może za pomocą tego API żądać od serwera informacji, a serwer odsyła informacje w ustalonym formacie. To jest bardzo ogólny opis: http://developer.mozilla.org/pl/docs/Podstawy_Web_Services

0

Hmm - ogólnie wiem o co w tym chodzi - jestem świeżym absolwentem Informatyki na UAM :) Chodzi mi raczej o to, czy na moim koncie w home.pl moge uruchomic taki webservice ?

0

z tego co wiem home.pl nie daje dostępu do serwerów javowych, ale można to napisać i w php i następnie dogadywać z dowolnym softem.
http://kursy.skryptoteka.pl/kurs.php?kurs=soap&strona=0
http://devzone.zend.com/article/689-PHP-SOAP-Extension

javowych jest tez kilak bibliotek

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