17

URLからの戻り値を印刷するためにcurlを使用するのは面倒です。私がこれまでに持っているコードは次のようになります。

<?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;

?>

私が知っている唯一の明らかな問題は、クエリ対象のサーバーがのGET代わりに使用することですPOSTGETこの方法に代わる方法はありますか?

4

5 に答える 5

26
curl_setopt($ch, CURLOPT_POST, 0);

CurlはデフォルトでGETを使用します。POSTに設定していました。必要に応じてオーバーライドできますcurl_setopt($ch, CURLOPT_HTTPGET, 1);

于 2013-03-18T21:10:24.840 に答える
4

file_get_contents()関数
file_get_contentsを使用します

または
curl_setopt($ch, CURLOPT_HTTPGET, 1);

于 2013-03-18T21:13:06.323 に答える
1

使用する

curl_setopt_array($ch, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => "http://yourlink.com",
CURLOPT_USERAGENT => 'Codular Sample cURL Request'));
于 2017-05-24T10:40:15.733 に答える
1

これらすべての年と誰も正しい答えを与えられていません。クエリ文字列を作成する方法はhttp_build_query()、配列で使用することです。これにより、すべてが自動的にエスケープされ、単純な文字列が返されます。

$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";
于 2018-03-03T17:37:37.420 に答える
0

URLに疑問符がありません。次のようになります:

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

また、URL内のそのXMLにはエンコードが必要です。たとえば、PHPでurlencode()関数を使用します。

于 2013-03-18T21:10:19.617 に答える