Набор команд PHP SOAP потерян, сообщение об ошибке неверно

0

Я попытался добавить руководство к exacttarget api, но всегда получаю ошибку "Bad Request". Весь код следует за образцом Exacttarget, может ли кто-нибудь

Ниже представлен конверт SOPA:

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Header>
     <Security xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
        <UsernameToken>
           <Username>****</Username>
           <Password>****</Password>
        </UsernameToken>
     </Security>
  </Header>
  <Body>
     <CreateRequest xmlns="http://exacttarget.com/wsdl/partnerAPI">
        <Objects xsi:type="Subscriber">
           <EmailAddress>test@example</EmailAddress>
           <SubscriberKey>test@example</SubscriberKey>
           <EmailTypePreference>HTML</EmailTypePreference>
           <Attributes>
              <Name>FIRST_NAME</Name>
              <Value>test</Value>
           </Attributes>
           <Attributes>
              <Name>LAST_NAME</Name>
              <Value>test</Value>
           </Attributes>
           <Attributes>
              <Name>BIRTHDAY</Name>
              <Value>'04/03/1988'</Value>
           </Attributes>
           <lists>
                    <partnerkey xsi:nil="true"></partnerkey>
                    <id>111111</id>
                    <objectid xsi:nil="true"></objectid>
                    <status>Active</status>
            </lists>
           <Status>Active</Status>
        </Objects>
     </CreateRequest>
  </Body>
</Envelope>

Вот мой curl-код:

$endpoint = 'https://webservice.s6.exacttarget.com/service.asmx';
    $soap_do = curl_init();
    curl_setopt($soap_do, CURLOPT_URL, $endpoint);
    curl_setopt($soap_do, CURLOPT_CONNECTTIMEOUT, 10);
    curl_setopt($soap_do, CURLOPT_TIMEOUT, 10);
    curl_setopt($soap_do, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($soap_do, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($soap_do, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($soap_do, CURLOPT_POST, true);
    curl_setopt($soap_do, CURLOPT_POSTFIELDS, $dataString);
    curl_setopt($soap_do, CURLOPT_HTTPHEADER, array('Content-Type: text/xml; charset=utf-8', 'Content-Length: ' . strlen($dataString),'SOAPAction: "http://exacttarget.com/wsdl/partnerAPI/Create"'));
$result = curl_exec($soap_do);

Пожалуйста помоги

  • 0
    Где находится $ dataString.?
  • 0
    $ dataString - это SOAP-конверт
Теги:
curl
salesforce
soap
exacttarget

2 ответа

0

Если вы хотите протестировать свои SOAP-запросы, попробуйте мой отличный скрипт:

<?php
if(isset($_POST['request'])){
    $XML = $_POST['request'];
    $URL = $_POST['url'];
    $ch = curl_init("$URL");
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch,CURLOPT_POST,1);
    curl_setopt($ch,CURLOPT_TIMEOUT, 60);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch,CURLOPT_POSTFIELDS,$XML);
    $result=curl_exec ($ch);
    curl_close($ch);
}
?>
<form method="post" style="margin: 0; padding: 0;">
    <input name='url' type="text" placeholder="URL here" value="<?php if(isset($_POST['url'])) echo $_POST['url']; ?>" style="height: 10%; width:90%">
    <button style="width: 9%; height: 10%;">LOAD SOAP</button>
    <div style="width: 49%; float:left;">
        <textarea style="width: 100%; height:89%;" placeholder='REQUEST HERE' name="request"><?php if(isset($_POST['request'])) echo $_POST['request']; ?></textarea>
    </div>
    <div style="width: 50%; display: inline;">
        <textarea placeholder="RESPONSE HERE" disabled="true" style="width: 50%; height: 40%;"><?php if(isset($result)) echo strtok($result, '<'); ?></textarea>
        <textarea placeholder="RESPONSE HERE" disabled="true" style="width: 50%; height: 49%;"><?php if(isset($result)) $config = array('indent'=>true,'output-xml'=>true,'input-xml'=> true); $tidyxml = new tidy; $tidyxml->parseString(strstr($result, '<'), $config, 'utf8'); echo $tidyxml;?></textarea>
    </div>
</form>
0

Адрес электронной почты в вашем примерном конверте SOAP не отображается. Не знаете, почему у вас есть одна цитата вокруг значения атрибута дня рождения.

Здесь рабочий конверт SOAP, который я использовал для проверки этой функции в учетной записи Enterprise 2.0:

<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:a="http://schemas.xmlsoap.org/ws/2004/08/addressing">
   <s:Header>
      <a:Action s:mustUnderstand="1">Create</a:Action>
      <a:MessageID>urn:uuid:4f8fcac0-3506-4d01-b946-c197fad3517a</a:MessageID>
      <a:ReplyTo>
         <a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address>
      </a:ReplyTo>
   </s:Header>
   <s:Body xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <CreateRequest xmlns="http://exacttarget.com/wsdl/partnerAPI">
         <Options>
            <Client>
               <ID><!-- BU MID GOES HERE --></ID>
            </Client>
         </Options>
         <Objects xmlns:q1="http://exacttarget.com/wsdl/partnerAPI" xsi:type="q1:Subscriber">
            <q1:Client>
               <q1:ID><!-- BU MID GOES HERE --></q1:ID>
            </q1:Client>
            <q1:PartnerKey xsi:nil="true" />
            <q1:ObjectID xsi:nil="true" />
            <q1:EmailAddress>[email protected]</q1:EmailAddress>
            <q1:Attributes>
               <q1:Name>Attribute1</q1:Name>
               <q1:Value>whee</q1:Value>
            </q1:Attributes>
            <q1:SubscriberKey>[email protected]</q1:SubscriberKey>
            <q1:Status>Active</q1:Status>
            <q1:EmailTypePreference>HTML</q1:EmailTypePreference>
            <q1:Lists>
               <q1:PartnerKey xsi:nil="true" />
               <q1:ID><!-- LIST ID GOES HERE --></q1:ID>
               <q1:ObjectID xsi:nil="true" />
               <q1:Status>Active</q1:Status>
            </q1:Lists>
         </Objects>
      </CreateRequest>
   </s:Body>
</s:Envelope>

Кроме того, есть намного больше людей, которые отвечают на вопросы SFMC на salesforce.stackexchange.com - в основном помечены областью маркетинга, облаками, ampscript и soap-api.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню