Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2011, 19:52   #1
snikers987
Пользователь
 
Регистрация: 04.12.2010
Сообщений: 63
Восклицание WebAPI curl или как?

Имеются вот такие данные:
PHP код:
Запрос

POST /History/HistoryService.asmx HTTP/1.1
Host: https://217.117.65.147:81
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "https://217.117.65.147:81/SaveMessage"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
 <soap:Body>
   <SaveMessage xmlns="https://217.117.65.147:81/">
     <type>string</type>
     <client_name>string</client_name>
     <mobilePhone>string</mobilePhone>
     <comment>string</comment>
     <id_manager>string</id_manager>
     <referal>string</referal>
     <sourceMessage>AGENTPORTAL-API</sourceMessage>
     <request_id>string</request_id>
   </SaveMessage>
 </soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

Ответ

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
 <soap:Body>
   <SaveMessageResponse xmlns="https://217.117.65.147:81/">
     <SaveMessageResult>string</SaveMessageResult>
   </SaveMessageResponse>
 </soap:Body>
</soap:Envelope>
Пробую так:

PHP код:
<?


$body 
=  "<?xml version=\"1.0\" encoding=\"utf-8\"?>
<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">
 <soap:Body>
   <<SaveMessage xmlns=\"https://217.117.65.147:81/\">
    <type>card</type>
    <client_name>Name</client_name>
    <mobilePhone>+38000000000</mobilePhone>
    <comment>not call</comment>
    <id_manager>00000000</id_manager>
    <referal>http://site.info</referal>
    <sourceMessage>PORTAL-API</sourceMessage>
    <request_id>123458</request_id>
  </SaveMessage>
 </soap:Body>
</soap:Envelope>
"
;


$curl_options = array (
  
CURLOPT_URL => 'https://217.117.65.147:81',
  
CURLOPT_POST => TRUE,
  
CURLOPT_SSL_VERIFYHOST => false,
  
CURLOPT_SSL_VERIFYPEER => false,
  
CURLOPT_HEADER => TRUE,
  
CURLOPT_HTTPHEADER => array(
    
"POST /History/HistoryService.asmx HTTP/1.1",
    
"Host: https://217.117.65.147:81",
    
"Content-Type: text/xml; charset=utf-8",
    
"Content-Length: " strlen($body),
    
"SOAPAction: \"https://217.117.65.147:81/SaveMessage\""
    
),
  
CURLOPT_POSTFIELDS => $body
 
);
 
 
$curl curl_init('https://217.117.65.147:81')
  or die(
"cURL init error\n");
curl_setopt_array($curl$curl_options)
  or die(
"cURL set options error\n" curl_error($curl));
$response curl_exec($curl)
  or die (
"cURL execute eroor\n" curl_error($curl));
curl_close($curl);


?>
Но получаю 400 ошибку не верный запрос.

Инфа от куда взят ответ и запрос:
Цитата:
На сегодняшний день мы готовы предложить Вам скрипт Web API. Web API используется в web-разработке, как правило это определенный набор HTTP запросов, а также определенные структуры HTTP ответов. Для выражения которых используют XML или JSON форматы.

Как добится работы? Может тут не CURL надо?
Пробовал CURLOPT_POSTFIELDS делать в формате : type=card&бла бла бла

Последний раз редактировалось snikers987; 22.10.2011 в 19:54.
snikers987 вне форума Ответить с цитированием
Старый 22.10.2011, 21:16   #2
snikers987
Пользователь
 
Регистрация: 04.12.2010
Сообщений: 63
По умолчанию

Но хоть подскажите в какую сторону копать?
snikers987 вне форума Ответить с цитированием
Старый 24.10.2011, 00:55   #3
aferistz
Пользователь
 
Регистрация: 13.12.2009
Сообщений: 26
По умолчанию

возможно проблема с портом, используйте
Код:
curl_setopt($ch, CURLOPT_PORT, 81);
а лучше всего написать с помощью сокетов
aferistz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Бесплатный хостинг с curl или сокетами. где взять? dem66 PHP 0 09.10.2011 22:17
CURL gofkane PHP 2 29.08.2011 14:53
Как передать заголовки в php через CURL sergeiqwe PHP 1 07.11.2010 21:08
curl + js topsecretx PHP 0 18.05.2009 21:23
delphi for php как подключить curl OkeaH PHP 5 03.02.2009 01:48