PHP cURL не работает для отправки POST-запроса к API

1

Я пытаюсь отправить запрос на отправку SMS-сообщения api и получать отзывы от них с помощью PHP и cURL. Но cURL не работает для меня, когда я пытаюсь отправить те же данные через форму, в которой он работает.

$POST = array(
            'data' => $xml1

    );
$url = 'URL';
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $POST );
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
$result = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
echo "<input type=\"textarea\" id=\"txt\"  style='width:600px' value='$result'></input>";
echo "<input type=\"textarea\" id=\"txt1\" name='data1' style='width:600px' value='".$info['request_header']."'></input>";

И XML IS

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE MESSAGE SYSTEM "http://127.0.0.1:80/psms/dtd/messagev12.dtd">
<MESSAGE VER="1.2">
<USER USERNAME="abc" PASSWORD="pqr" />
<SMS UDH="0" CODING="1" TEXT="SMS TEXT" PROPERTY="0" ID="1" TEMPLATE="" EMAILTEXT="" ATTACHMENT=""><ADDRESS FROM="someone" TO="91xxxxxxxxxx" EMAIL="" SEQ="1" TAG="some clientside random data"/>
</SMS>
</MESSAGE>

НО ИСПОЛЬЗОВАНИЕ ФОРМЫ ЭТО РАБОТАЕТ ТЯЖЕЛОЙ, КОД ДЛЯ ФОРМ

echo "<form action=\"URL\" method=\"POST\" target=\"_blank\">";

    echo "<input type=\"textarea\" id=\"txt\" name='data' style='width:600px' value='$xml1'></input>";
    echo "<input type=\"SUBMIT\" name=\"action\" value=\"send\">";
    echo "</form>";

Когда я отправляю данные с помощью формы, он показывает статус отправки, но когда я отправляю с помощью curl, он показывает вывод как:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <MESSAGEACK>
    <Err Code="65535" Desc="The Specified message does not conform to DTD"/>
</MESSAGEACK> 

Спасибо

  • 0
    Первое отличие, которое я вижу, в том, что вам не хватает "action" => "send" в данных curl $POST . Ваша версия curl также устанавливает заголовок content-type запроса на «multipart / form-data»
  • 0
    @Phil Я изменил тип контента на text / xml и добавил action = send, но все равно показывает ту же ошибку
Показать ещё 9 комментариев
Теги:
curl
post

1 ответ

0

Как вы установили переменную $xml1?

Убедитесь, что вы использовали $xml1 = file_get_contents($xmlFilepath) istead simplexml_load_file($xmlFilepath)

  • 0
    я сгенерировал xml динамически, используя php и mysql, так что $xml1 - это просто переменная, содержащая xml
  • 0
    Итак, $xml1 данных $xml1 - это объект или строка SimpleXMLElement?
Показать ещё 3 комментария

Ещё вопросы

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