web-dev-qa-db-fra.com

Comment utiliser curl GET au lieu de POST

J'essaie d'utiliser curl pour imprimer un retour à partir d'une URL. Le code que j'ai jusqu'à présent ressemble à ceci:

<?php
    $street = $_GET['street'];
    $city = $_GET['city'];
    $state = $_GET['state'];
    $Zip = $_GET['Zip'];

    $url = 'http://eligibility.cert.sc.egov.usda.gov/eligibility/eligibilityservice';
    $query = 'eligibilityType=Property&requestString=<?xml version="1.0"?><Eligibility xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="/var/lib/Tomcat5/webapps/eligibility/Eligibilitywsdl.xsd"><PropertyRequest StreetAddress1="'.$street.'" StreetAddress2="" StreetAddress3="" City="'.$city.'" State="'.$state.'" County="" Zip="'.$Zip.'" Program="RBS"></PropertyRequest></Eligibility>';
    $url_final = $url.''.$url_query;

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS,$query);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $return = curl_exec ($ch);
    curl_close ($ch);

    echo $return;

?>

le seul problème évident que je sache, c'est que le serveur interrogé utilise GET au lieu de POST. Existe-t-il GET des alternatives à cette méthode?

17
Plummer
curl_setopt($ch, CURLOPT_POST, 0);

Curl utilise GET par défaut. Vous le régliez sur POST. Vous pouvez le remplacer si vous en avez besoin avec curl_setopt($ch, CURLOPT_HTTPGET, 1);

24
AlienWebguy

Utiliser la fonction file_get_contents ()
file_get_contents

Ou
curl_setopt($ch, CURLOPT_HTTPGET, 1);

3
Oyeme

utilisation

curl_setopt_array($ch, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => "http://yourlink.com",
CURLOPT_USERAGENT => 'Codular Sample cURL Request'));
1
Antara Das

Toutes ces années et personne n'a donné la bonne réponse; la façon de construire une chaîne de requête consiste à utiliser http_build_query() avec un tableau. Cela échappe automatiquement à tout et renvoie une chaîne simple.

$xml = '<?xml version="1.0"?><Eligibility xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="/var/lib/Tomcat5/webapps/eligibility/Eligibilitywsdl.xsd"><PropertyRequest StreetAddress1="'.$street.'" StreetAddress2="" StreetAddress3="" City="'.$city.'" State="'.$state.'" County="" Zip="'.$Zip.'" Program="RBS"></PropertyRequest></Eligibility>';
$data = [
    "eligibilityType" => "Property",
    "requestString" => $xml
];
$query = http_build_query($data);
$url .= "?$query";
1
miken32

Il manque un point d'interrogation dans l'URL. Devrait être comme:

$query = '?eligibilityType=Property&...';

De plus, ce XML dans votre URL doit être codé, par exemple utilisez la fonction rlencode () en PHP.

0
edwardmp