[Http POST]Problem z wywołaniem tej metody

0

Witam,

Ostatnio zainteresowałem się protokołem HTTP i zacząłem pisać próbne programy do obsługi tego protokołu.
Stanąłem przy metodzie POST która za nic nie chce się wywołać.

Na XAMPP'owym serwerze zamieściłem testowy plik test.php i gz.php

Oto kod test.php:


 <form action="gz.php" method="post" >


                    <input id="user" name="user" class="text" type="text" value=""/>

   
				<input type="submit" id="login_button"  value="Klik!"/>
		
    </form>


 

Kod gz.php wyświetla tylko wiadomość.

A oto kod w JAVIE jakim się posługiwałem żeby wywołać metodę POST:



class Cx {
    
    public Cx(){
        
        try{
        
          URL url = new URL("http://127.0.0.1/test.php");

  HttpURLConnection connection = (HttpURLConnection) url.openConnection();

  
  connection.setDoOutput(true);
  connection.setDoInput(true);
  connection.setFollowRedirects(true);
  connection.setRequestMethod("POST");
  
 
  String post = URLEncoder.encode("user=Asdfgh", "UTF-8");
 
 
  connection.setRequestProperty("User-Agent", "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13");

  connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
  connection.setRequestProperty("Content-length", String.valueOf(post.length()));
 
 
  OutputStream os = connection.getOutputStream();
  OutputStreamWriter osw = new OutputStreamWriter(os);
  osw.write(post);
  
  osw.close();
 
 
  InputStream is = connection.getInputStream(); 
  BufferedReader br = new BufferedReader(new InputStreamReader(is));
 
  String s = null;
 
  while ((s = br.readLine()) != null) {
       System.out.println(s);
  }
  

  
        }catch(Exception ex){System.out.println(ex);}
    }
    
}



 

W kodzie Javy na pewno jest jakiś błąd ponieważ próbowałem na niektórych stronach internetowych użyć tej metody i tez nie działała.

Czy wie ktoś co jest źle ?

Za pomoc, dzięki :)

1

Pierwsza rzecz jest taka, że twój kod test.php wysyła posta do gz.php, a kod programu wysyła post do test.php. Powinien konsekwentnie robić to co test, więc też mieć adres gz.php.
Poza tym, to nic konkretnego nie napisałeś. Nie wiadomo, czy problem jest w wysłaniu, czy w odbieraniu, czy masz jakiś wyjątek, czy println coś wypisuje. Dobrze by było w kodzie php zrobić logowanie do jakiegoś pliku, żeby zobaczyć jak to zapytanie przychodzi. Możesz też wstępnie spojrzeć w log apache co tam się pisze.

0

To tak..

Zmieniłem z test.php na gz.php w kodzie Javy i dalej nic. Próbowałem na stronie test.php z poziomu przeglądarki wywołać metodę POST to działało.

Jeżeli chodzi o wyjątki to nie ma. A println nic nie wypisuje ponieważ parametr nie został wysłany do gz.php

Wiec coś musi tkwić w kodzie programu tylko co ?

1

Źle jest to: String post = URLEncoder.encode("user=Asdfgh", "UTF-8");
Napisz normalnie String post = "user=Asdfgh"; to zadziała. Ogólnie chodzi o to, ze trzeba pisać:
String data = URLEncoder.encode("key1", "UTF-8") + "=" + URLEncoder.encode("value1", "UTF-8");

0

Zrobiłem na dwa sposoby które przed chwilą napisałeś i dalej nie wysyła ;/

1

A masz funkcję main? Jak masz takową, to wklej kod i jeszcze wklej gz.php cały.

0

Funkcja main:


public class URLRequestor {


    public static void main(String[] args) {

        Cx cx = new Cx();
       
    }
}

Importów już chyba nie muszę dawać :)

a jeżeli chodzi o gz.php to:


echo 'Dane: ', $_POST['user'];

1

Nie masz znacznika <?php
Wpisz sobie jeszcze tak kod do tego gz.php i zobacz co ci wypisze i wklej tą odpowiedź.

<?php var_dump($_REQUEST); echo $_POST['user']; ?>
0

Wielkie dzięki teraz wszystko działa :)

Temat do zamknięcia.

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