2010-01-28 12 views
15

Nunca veo cómo se envía la solicitud PUT/DELETE.¿Cómo iniciar una solicitud GET/POST/PUT/DELETE y el tipo de solicitud de juez en PHP?

¿Cómo hacerlo en PHP?

sé cómo enviar una solicitud/POST GET con rizo:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile); 
curl_setopt($ch, CURLOPT_COOKIEFILE,$cookieFile); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_POST, 0); 
curl_setopt($ch, CURLOPT_TIMEOUT, 4); 

sino cómo hacerlo PUT petición/DELETE?

+0

Para obtener una solicitud PUT, no puedes hacer $ _PUT [ 'var'], pero: 'parse_str (file_get_contents ('php: // input'), $ put_vars);' – Strae

+0

'$ _PUT' fallará, pero' php: // input' funciona. – user198729

Respuesta

46

Para uso DELETEcurl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
Para PUT uso curl_setopt($ch, CURLOPT_PUT, true);

Una alternativa que no se basa en el enrollamiento está instalando sería utilizar file_get_contents con un custom HTTP stream context.

$result = file_get_contents(
    'http://example.com/submit.php', 
    false, 
    stream_context_create(array(
     'http' => array(
      'method' => 'DELETE' 
     ) 
    )) 
); 

Salida estos dos artículos sobre cómo hacer REST con PHP

+0

Está funcionando y he votado a favor, pero el inconveniente es que la 'apertura de url remota' a través de file_get_contents puede estar bloqueada en la configuración y eso se ha tenido en cuenta – Ekonoval

+0

@Ekonoval seguro, al igual que debe tenerse en cuenta que cURL podría no se instalará :) – Gordon

3

términos generales, si desea enviar alguna petición "no-GET", a menudo trabajará con curl.


Y utilizará la función curl_setopt para configurar la solicitud que está enviando; entre la gran cantidad de opciones posibles, para cambiar el método de la petición, usted estará interesado en por lo menos esas opciones (citando):

  • CURLOPT_CUSTOMREQUEST: Un método personalizado a utilizar en lugar de "GET" o "HEAD" cuando se realiza una solicitud HTTP. Esto es útil para hacer "DELETE" u otras solicitudes HTTP más oscuras.
  • CURLOPT_HTTPGET: TRUE para restablecer el método de solicitud HTTP al GET.
  • CURLOPT_POST: TRUE para hacer un HTTP POST regular.
  • CURLOPT_PUT: TRUE a HTTP PUT un archivo. El archivo a PUT debe configurarse con CURLOPT_INFILE y CURLOPT_INFILESIZE.


Por supuesto, curl_setopt no es la única función que va a utilizar; consulte la página de documentación de curl_exec para ver un ejemplo de cómo enviar una solicitud con curl.

(Sí, que el ejemplo es bastante simple, y envía una solicitud GET - pero usted debe ser capaz de construir desde allí ;-))

+0

'CURLOPT_POST' se utiliza para enviar la solicitud GET/DELETE, ¿qué hay de PUT/DELETE? – user198729

+0

para PUT, tiene 'CURLOPT_PUT', y para ELIMINAR, parece que tendrá que usar' CURLOPT_CUSTOMREQUEST' –

+1

Correcto. Eso es lo que dice en el segundo artículo que he vinculado también. – Gordon

Cuestiones relacionadas