Autore Topic: Metodo Post non passa i valori a pagina php  (Letto 621 volte)

Offline nicozumel

  • Nuovo arrivato
  • *
  • Post: 43
  • Respect: +5
    • Mostra profilo
  • Dispositivo Android:
    Huawei - P7
  • Sistema operativo:
    Windows 7
Metodo Post non passa i valori a pagina php
« il: 28 Gennaio 2015, 17:36:52 CET »
0
Ciao a tutti,  nella mia app sto utilizzando la classe "com.loopj.android.http.AsyncHttpClient" con il metodo post:
Codice: [Seleziona]
                            RequestParams params = new RequestParams();
         
                            params.put("NomeArt", nomart.getText().toString());
                            params.put("MarcaArt", marcaart.getText().toString());
                            params.put("BarCodeart", barcodeart.getText().toString());

                            //*** istanza del client ***
                            AsyncHttpClient client = new AsyncHttpClient();
                            client.post("http://miosito.org/xxx/insarticolo.php", params, new JsonHttpResponseHandler()
                                                  {
                                                                    @Override
                                                                    public void onSuccess(int statusCode, Header[] headers, JSONObject response)
                                                                    {.......
La pagina PHP esegue una semplice insert:
Codice: [Seleziona]
<?php
mysql_connect("host","user","pwd");
mysql_select_db("my_db");

$help2= $_POST['NomeArt'];
$help3= $_POST['MarcaArt'];
$help4= $_POST['BarCodeart'];

$result=mysql_query("INSERT into articoli (NomeArt, MarcaArt, BarCodeart) VALUES ('".$help2."','".$help3."','".$help4."')");

if (!$result)
  {
                $arr = array('messaggio' => 'Errore in inserimento');
                print(json_encode($arr));
   }
        else       
   {
                $arr = array('messaggio' => 'Articolo inserito');
                print(json_encode($arr));
        }
mysql_close();
?>
Il tutto sembra molto semplice e lineare il problema però è che anche se la pagina viene richiamata, viene eseguito l'insert ma i campi del record appena aggiunto risultano vuoti.
La cosa curiosa è che se provo puntando al sito presente nel mio Nas "casalingo" il tutto funziona, ma richiamando la stessa pagina in un sito remoto, il problema si presenta.
Nn so proprio dove stia il problema.
Qualche suggerimento sarebbe molto gradito.
ringrazio anticipatamente.

Nicola

Offline arlabs

  • Utente normale
  • ***
  • Post: 434
  • Respect: +49
    • Mostra profilo
  • Dispositivo Android:
    GalaxyS7
  • Play Store ID:
    AR Labs
  • Sistema operativo:
    Windows 10
Re:Metodo Post non passa i valori a pagina php
« Risposta #1 il: 30 Gennaio 2015, 18:38:04 CET »
0
Io ho avuto problemi, usando HttpClient chiamato su pagine php.

Usavo un AndroidHttpclient e non un AsyncHttpClient, i parametri li componevo nella stringa dell'URL, ed il problema era diverso.
Non ho capito il perché.

Comunque, ho risolto usando HttpURLConnection.

Vedi qui: http://www.anddev.it/index.php/topic,15749.msg79231.html#msg79231

Se capisci il problema, fammelo sapere, magari centra qualcosa col mio.

Ciao.

Offline tonno16

  • Utente storico
  • *****
  • Post: 1231
  • Respect: +60
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Metodo Post non passa i valori a pagina php
« Risposta #2 il: 31 Gennaio 2015, 01:05:26 CET »
0
A che io in locale funzionava tutto e su server on line non funzionava benché l'operazione che doveva compiere la richiesta era minima. Sarei curioso di sapere il problema.
Magari postando sul repository o facendo una segnalazione. Trovate impossibile l' ipotesi di un bug in tale libreria?

Offline nicozumel

  • Nuovo arrivato
  • *
  • Post: 43
  • Respect: +5
    • Mostra profilo
  • Dispositivo Android:
    Huawei - P7
  • Sistema operativo:
    Windows 7
Re:Metodo Post non passa i valori a pagina php
« Risposta #3 il: 01 Febbraio 2015, 12:04:50 CET »
0
Ciao,
 allora, io avrei risolto usando sempre la classe "AsyncHttpClient" ma non con il metodo "post" bensi con il metodo "get".
Mi piaceva di più il primo metodo non dovendo esplicitare i parametri nell url della chiamata. Ma può andare bene anche il metodo get non avendo parametri sensibili da passare. Il codice modificato è il seguente:
Codice: [Seleziona]
                                 RequestParams params = new RequestParams();
                                 //*** istanza del client ***
                                 AsyncHttpClient client = new AsyncHttpClient();
                                         client.get("http://miosito/xxx/insarticolo.php?nomeart=" + nomart.getText().toString() +
                                                  "&marcaart=" + marcaart.getText().toString(), params, new JsonHttpResponseHandler()
                                                                  {
                                                                    @Override
                                                                    public void onSuccess(int statusCode, Header[] headers, JSONObject response)
                                                                    {...}...}):
In definitiva non credo siano problemi di tale libreria, infatti funziona benissimo nel mio sito locale. Credo invece potrebbe essere una sorta di restrizione del provider di web hosting.
Ovvero perchè se uso il post da pagine web funziona benissimo (tramite form per esempio) e se la chiamata avviene da un app android non va???
Forse il server riconosce una chiamata diversa e la blocca....beh non saprei cmq la soluzione alternativa per il momento l'ho trovata.
grazie anche voi
Ciao


Offline arlabs

  • Utente normale
  • ***
  • Post: 434
  • Respect: +49
    • Mostra profilo
  • Dispositivo Android:
    GalaxyS7
  • Play Store ID:
    AR Labs
  • Sistema operativo:
    Windows 10
Re:Metodo Post non passa i valori a pagina php
« Risposta #4 il: 02 Febbraio 2015, 09:58:25 CET »
0
Può essere tutto, anche a me funzionava da browser e non da codice. Ma non mi funzionava proprio con il get che a te invece funziona.

Boh.