php - 使用curl来使用这个Web服务

mhe*_*ers 2 php curl web-services asmx

我在使用CURL 消费 Web服务时看到了这篇文章:使用php消费WebService

我试图遵循它,但没有运气.我上传了一张我正在尝试访问的网络服务的照片.假设URL为:我将如何根据以下示例制定我的请求:

https://site.com/Spark/SparkService.asmx?op=InsertConsumer

在此输入图像描述

我尝试了这个,但它只返回一个空白页:

 $url = 'https://xxx.com/Spark/SparkService.asmx?op=InsertConsumer?NameFirst=Joe&NameLast=Schmoe&PostalCode=55555&EmailAddress=joe@schmoe.com&SurveyQuestionId=76&SurveyQuestionResponseId=1139';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $result = curl_exec($ch);
    curl_close($ch);

    $xmlobj = simplexml_load_string($result);
    print_r($xmlobj);
Run Code Online (Sandbox Code Playgroud)

Dav*_*dom 5

真的,你应该看看SOAP扩展.如果它不可用或由于某种原因你必须使用cURL,这是一个基本框架:

<?php

  // The URL to POST to
  $url = "http://www.mysoapservice.com/";

  // The value for the SOAPAction: header
  $action = "My.Soap.Action";

  // Get the SOAP data into a string, I am using HEREDOC syntax
  // but how you do this is irrelevant, the point is just get the
  // body of the request into a string
  $mySOAP = <<<EOD
<?xml version="1.0" encoding="utf-8" ?>
<soap:Envelope>
  <!-- SOAP goes here, irrelevant so wont bother writing it out -->
</soap:Envelope>
EOD;

  // The HTTP headers for the request (based on image above)
  $headers = array(
    'Content-Type: text/xml; charset=utf-8',
    'Content-Length: '.strlen($mySOAP),
    'SOAPAction: '.$action
  );

  // Build the cURL session
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_POST, TRUE);
  curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $mySOAP);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

  // Send the request and check the response
  if (($result = curl_exec($ch)) === FALSE) {
    die('cURL error: '.curl_error($ch)."<br />\n");
  } else {
    echo "Success!<br />\n";
  }
  curl_close($ch);

  // Handle the response from a successful request
  $xmlobj = simplexml_load_string($result);
  var_dump($xmlobj);

?>
Run Code Online (Sandbox Code Playgroud)