Autore Topic: Metodi GET e POST  (Letto 1042 volte)

Offline Auron

  • Utente junior
  • **
  • Post: 104
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Motorola Milestone Android 2.2.1
  • Sistema operativo:
    Windows
Metodi GET e POST
« il: 15 Luglio 2011, 17:26:17 CEST »
0
Ciao a tutti,vi spiego il problema:
Se volessi aggiungere la possibilità di richiedere manualmente il tipo di SELECT da fare a PHP?

Mi spiego meglio:
in PHP si può usare il metodo GET che lascia visibile le richieste fatte dall'utente sull'indirizzo digitato, ovvero se voglio che la SELECT nel codice di PHP mi dia come risultato il nome dell'utente loggato con user:user1 dovrei fare una cosa di questo tipo:
SELECET nome FROM user WHERE user=variabile
dove variabile contiene user1 (che gli passo da java)
in pratica l'indirizzo dovrebbe essere qualcosa del tipo: http://localhost/log.php?variabile=user1

Per il metodo POST invece rimane nascosta la variabile (se non sbaglio). A questo punto tornando al problema principale, come faccio a fare entrambi i tipi di richieste da codice JAVA?
Devo mandargli la url concatenata a "?variabile=user1" ?

Inoltre, devo fare modifiche a queste parti di codice JAVA?

Codice (Java): [Seleziona]
HttpClient httpclient = new DefaultHttpClient();
                        HttpPost httppost = new HttpPost("http://192.168.1.102/log.php");
                        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                        HttpResponse response = httpclient.execute(httppost);
                        HttpEntity entity = response.getEntity();                        
                        str = convertStreamToString(entity.getContent());
                        JSONObject json = new JSONObject(str);
                        parse(json,str);

e PHP? Devo per caso mettere la query in qualche form per abilitare POST O GET?
Codice: [Seleziona]
<?php
$conn=mysql_connect("localhost", "xxxxx", "yyyyy");
mysql_select_db("deal");
if (!$conn)
        {
        printf("Connessione non riuscita: %sn", mysqli_connect_error());
        exit();
        }
else
        {

        $sql=mysql_query("select nome from myuser where user=$_POST[user]"); #dove $_POST[user] penso sia la variabile
       
        while($row=mysql_fetch_assoc($sql))
                {
                $output[]=$row;
                }
        print(json_encode($output));
        mysql_close();
        }
?>
« Ultima modifica: 15 Luglio 2011, 17:28:54 CEST da stefanoadsl »
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;-)

Offline Auron

  • Utente junior
  • **
  • Post: 104
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Motorola Milestone Android 2.2.1
  • Sistema operativo:
    Windows
Re:Metodi GET e POST
« Risposta #1 il: 16 Luglio 2011, 00:12:35 CEST »
0
Ragazzi guardando questo esempio di codice che racchiude un possibile RESTClient, cosa rappresentano gli headers? params è chiaro perchè son quelli che richiede solo il metodo GET dalla solita forma http://sito/file.php?params

Codice (Java): [Seleziona]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URLEncoder;
import java.util.ArrayList;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;

public class RestClient {
         
    private ArrayList <NameValuePair> params;
    private ArrayList <NameValuePair> headers;
 
    private String url;
 
    private int responseCode;
    private String message;
 
    private String response;
 
    public String getResponse() {
        return response;
    }
 
    public String getErrorMessage() {
        return message;
    }
 
    public int getResponseCode() {
        return responseCode;
    }
 
    public RestClient(String url)
    {
        this.url = url;
        params = new ArrayList<NameValuePair>();
        headers = new ArrayList<NameValuePair>();
    }
 
    public void AddParam(String name, String value)
    {
        params.add(new BasicNameValuePair(name, value));
    }
 
    public void AddHeader(String name, String value)
    {
        headers.add(new BasicNameValuePair(name, value));
    }
   
    public enum RequestMethod {
        GET, POST, PUT, DELETE;
    }
   
    public void Execute(RequestMethod method) throws Exception
    {
        switch(method) {
            case GET:
            {
                //add parameters
                String combinedParams = "";
                if(!params.isEmpty()){
                    combinedParams += "?";
                    for(NameValuePair p : params)
                    {
                        String paramString = p.getName() + "=" + URLEncoder.encode(p.getValue(),"UTF-8");
                        if(combinedParams.length() > 1)
                        {
                            combinedParams  +=  "&" + paramString;
                        }
                        else
                        {
                            combinedParams += paramString;
                        }
                    }
                }
 
                HttpGet request = new HttpGet(url + combinedParams);
 
                //add headers
                for(NameValuePair h : headers)
                {
                    request.addHeader(h.getName(), h.getValue());
                }
 
                executeRequest(request, url);
                break;
            }
            case POST:
            {
                HttpPost request = new HttpPost(url);
 
                //add headers
                for(NameValuePair h : headers)
                {
                    request.addHeader(h.getName(), h.getValue());
                }
 
                if(!params.isEmpty()){
                    request.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
                }
 
                executeRequest(request, url);
                break;
            }
        }
    }
 
    private void executeRequest(HttpUriRequest request, String url)
    {
        HttpClient client = new DefaultHttpClient();
 
        HttpResponse httpResponse;
 
        try {
            httpResponse = client.execute(request);
            responseCode = httpResponse.getStatusLine().getStatusCode();
            message = httpResponse.getStatusLine().getReasonPhrase();
 
            HttpEntity entity = httpResponse.getEntity();
 
            if (entity != null) {
 
                InputStream instream = entity.getContent();
                response = convertStreamToString(instream);
 
                // Closing the input stream will trigger connection release
                instream.close();
            }
 
        } catch (ClientProtocolException e)  {
            client.getConnectionManager().shutdown();
            e.printStackTrace();
        } catch (IOException e) {
            client.getConnectionManager().shutdown();
            e.printStackTrace();
        }
    }
 
    private static String convertStreamToString(InputStream is) {
 
        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
        StringBuilder sb = new StringBuilder();
 
        String line = null;
        try {
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                is.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return sb.toString();
    }
}

Credo che gli heardes siano la chiave del mio problema...
Ho fatto delle prove ma quando faccio la SELECT nel file PHP con la $_POST[variabile] il risultato è null (da browser)
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;-)