web-dev-qa-db-fra.com

php curl: J'ai besoin d'une simple demande de publication et de la récupération d'un exemple de page

Je voudrais savoir comment envoyer une demande de publication en boucle et obtenir la page de réponse.

30
ufk

Qu'en est-il quelque chose comme ceci:

$ch = curl_init();
$curlConfig = array(
    CURLOPT_URL            => "http://www.example.com/yourscript.php",
    CURLOPT_POST           => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POSTFIELDS     => array(
        'field1' => 'some date',
        'field2' => 'some other data',
    )
);
curl_setopt_array($ch, $curlConfig);
$result = curl_exec($ch);
curl_close($ch);

// result sent by the remote server is in $result


Pour obtenir une liste des options pouvant être utilisées avec curl, vous pouvez consulter la page de curl_setopt .

Ici, vous devrez au moins utiliser:

  • CURLOPT_POST: vous souhaitez envoyer une demande POST, et non une requête GET
  • CURLOPT_RETURNTRANSFER: selon que vous voulez que curl_exec renvoie le résultat de la demande ou le produise simplement.
  • CURLOPT_POSTFIELDS: Les données qui seront publiées - peuvent être écrites directement sous forme de chaîne, comme une chaîne de requête, ou en utilisant un tableau


Et n'hésitez pas à lire la section curl du manuel PHP ;-)

57
Pascal MARTIN
$url = "http://www.example.com/";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);

$data = array(
    'username' => 'foo',
    'password' => 'bar'
);


curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$contents = curl_exec($ch);
curl_close($ch);
4
areeb

essayez celui dans les commentaires: http://php.net/manual/en/curl.examples-basic.php

(mais ajoutez curl_setopt ($ ch, CURLOPT_POST, 1) pour en faire un post au lieu de get)

ou cet exemple: http://php.dzone.com/news/execute-http-post-using-php-cu

2
user262976

Vous devez définir la demande pour publier à l'aide de CURLOPT_POST et si vous souhaitez transmettre des données, utilisez CURLOPT_POSTFIELDS:

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);

$data = array(
    'username' => 'foo',
    'password' => 'bar'
);

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

$contents = curl_exec($ch);

curl_close($ch);
2
Tatu Ulmanen
  <?php
  ob_start();
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL,'https://example.com/student_list.php');
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  $response = curl_exec($ch);
  echo $response;
  ?>
1
Siddharth Shukla

Je pense que vous devez ajouter 

curl_setopt($curlHandle, CURLOPT_POSTFIELDS, $postFields);
1
Sinan

Utilisation de données JSON avec CURL

client.php

    <?php 

$url="http://192.168.44.10/project/server/curl_server.php";
$data=['username'=>'abc','password'=>'123'];
$data = json_encode($data);

$ch = curl_init();
$curlConfig = array(
    CURLOPT_URL            => $url,
    CURLOPT_HTTPHEADER     => array('Content-Type: application/json'),
    CURLOPT_POST           => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POSTFIELDS     => $data
);
curl_setopt_array($ch, $curlConfig);
$result = curl_exec($ch);
curl_close($ch);
echo $result;  //here you get result like: username: abc and password: 123
?>

curl_server.php

    <?php

    $data = file_get_contents('php://input');
    $Data= json_decode($data,true);

    echo 'username: '.$Data['username']." and password: ".$Data['password'];
?>
0
Varasney Atawadkar