PHP:使用带标记的CURL发送xml

时间:2014-04-16 22:37:53

标签: php xml curl soap

我需要使用curl发送一个xml文件,但是xml的HEADER在Header上有一个标签。请参阅下面的xml:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns="http://www.adform.com/api/2010/06"
xmlns:ns1="http://www.adform.com/api/2013/06/18"
xmlns:arr="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
   <soapenv:Header>
      <ns:Ticket>Dz02gYmsWnlWF1-hNCVC58jP7QF0idTYi9r9VkjOCIMzpwQ63uZiK4N46NsGs4gX7dryU5nt-FMqRbfs-x2WPg__</ns:Ticket>
   </soapenv:Header>
   <soapenv:Body>
      <ns1:CreateReportScheduleData>
         <ns1:ReportSchedule>
            <ns1:TemplateId>42734</ns1:TemplateId>
            <ns1:Name>ReportScheduleName</ns1:Name>
            <ns1:StartDate>2013-06-18T00:00:00</ns1:StartDate>
            <ns1:EndDate>2013-06-22T00:00:00</ns1:EndDate>
            <ns1:FileDelivery xsi:type="ns1:FileDeliveryToFtp" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
               <ns1:FtpAddress>ftp://ftp.mycompany.com</ns1:FtpAddress>
               <ns1:UserName>username</ns1:UserName>
               <ns1:NotificationEmail>notifications@mycompany.com</ns1:NotificationEmail>
               <ns1:Password>password</ns1:Password>
            </ns1:FileDelivery>
            <ns1:Frequency>Weekly</ns1:Frequency>
            <ns1:WeekDays>
               <ns1:WeekDay>Monday</ns1:WeekDay>
               <ns1:WeekDay>Wednesday</ns1:WeekDay>
            </ns1:WeekDays>
            <ns1:FileFormat>Csv</ns1:FileFormat>
            <ns1:DataFilters>
               <ns1:ReportPresetInterval>Custom</ns1:ReportPresetInterval>
               <ns1:ReportInterval>
                  <ns1:StartDate>2013-06-04T00:00:00</ns1:StartDate>
                  <ns1:EndDate>2013-06-16T00:00:00</ns1:EndDate>
               </ns1:ReportInterval>
               <ns1:AdvertiserIds>
                  <arr:int>2544</arr:int>
               </ns1:AdvertiserIds>
               <ns1:CampaignIds>
                  <arr:int>22742</arr:int>
               </ns1:CampaignIds>
               <ns1:MediaIds>
                  <arr:int>65335</arr:int>
                  <arr:int>65337</arr:int>
               </ns1:MediaIds>
               <ns1:TrackingPointFilterId>18077</ns1:TrackingPointFilterId>
            </ns1:DataFilters>
         </ns1:ReportSchedule>
      </ns1:CreateReportScheduleData>
   </soapenv:Body>
</soapenv:Envelope>

这是一个soap请求的示例,任何人都有一些想法我如何设置CURL的Ticket标签?

非常感谢!

1 个答案:

答案 0 :(得分:1)

您可以使用正则表达式,或:

<?php

$xml = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/.........';

list($part1, $part2) = explode("<ns:Ticket>", $xml);

list($ticket, $part3) = explode("</ns:Ticket>", $part2);

$newTicket = "<ns:Ticket>blablabla</ns:Ticket>"; // <== your ticket here

$xml = $part1 . $newTicket . $part3;

echo $xml;

?>