Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Разные запросы POST на 1С и PHP

Разные запросы POST на 1С и PHP
Я
   D_E_S_131
 
18.11.17 - 20:40
Есть код на PHP

// our curl handle (initialize if required)

    static $ch = null;
    if (is_null($ch)) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; PHP client; ' . php_uname('s') . '; PHP/' . phpversion() . ')');
    }
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

    // run the query

    $res = curl_exec($ch);
    if ($res === false) throw new Exception('Could not get reply: ' . curl_error($ch));


...и делаю аналог на 1С

ssl = Новый ЗащищенноеСоединениеOpenSSL();

Соединение = Новый HTTPСоединение(ПутьКСайту,,,,,, ssl);

Запрос = Новый HTTPЗапрос(ЗапросКСайту, Заголовки);

Результат = Соединение.ОтправитьДляОбработки(Запрос);

СтрокаОтвет = Результат.ПолучитьТелоКакСтроку();


Код PHP отрабатывает корректно и возвращает в ответ строку JSON с нужными данными. Код на 1С возвращает в ответ строку с описанием ошибки. Все переменные (путь к сайту, текст запроса, заголовки) идентичные. Сам запрос отрабатывает без ошибок. Но такое ощущение, что заголовки приходят какие-то искаженные. Никто не сталкивался с подобным (уже всю голову сломал).
 
 
   Asmody
 
1 - 18.11.17 - 20:45
(0) на php у тебя запрос GET, на 1С – POST
   D_E_S_131
 
2 - 18.11.17 - 21:01
Где это по коду PHP видно?
В описании API сайта этот указано, что тип запроса должен быть POST. Но и замена кода на:

Результат = Соединение.Получить(Запрос);


...приводит к такому же результату. :(
   D_E_S_131
 
3 - 18.11.17 - 21:07
При чем в API этого ресурса часть запросов может использоваться как публичные, а часть требуют аутентификацию.
Так вот публичные работают норм, а именно для аутентификации требуется передать параметры в заголовках и вот с ними какая-то проблема.
   Fram
 
4 - 18.11.17 - 21:16
Ты нам важное то не показал. Где код формирования заголовка на 1с?
   D_E_S_131
 
5 - 18.11.17 - 21:20
В PHP так

 $headers = array(
        'Sign: ' . $sign,
        'Key: ' . $key,
    );


в 1С делаю так:

Заголовки = Новый Соответствие;
        
        Заголовки.Вставить("Sign", ШифрованноеЗначение);
        Заголовки.Вставить("Key", Ключ);


И там, и там передаются строковые переменные, которые одинаковы (даже специально через print() их из PHP выводил и принудительно подставлял в код 1С).
   spock
 
6 - 18.11.17 - 21:27
(0) Вот по этому адресу глянь свои заголовки и ищи отличия:
http://httpbin.org/headers
   RitterBruder
 
7 - 18.11.17 - 21:29
Какая платформа?
   RitterBruder
 
8 - 18.11.17 - 21:29
Ну и всегда есть WinHttpRequest
   D_E_S_131
 
9 - 18.11.17 - 21:30
(6) Ок, посмотрю.
(7) 8.3.10.2667
   D_E_S_131
 
10 - 18.11.17 - 21:33
(6) Упссс... а как посмотерть там, просто адрес моего сайта подменить на указанный тобой?

(8) Имеешь ввиду не использовать платформу 1С для отправки запросов, а использовать виндовые методы?
 
 Рекламное место пустует
   RitterBruder
 
11 - 18.11.17 - 21:39
(10) Я так понял просто гет шлешь с 1С и PHP и сравниваешь результат.
Про виндовые методы - да, у меня у самого много что так работает, когда 1С мозг делает.
   D_E_S_131
 
12 - 18.11.17 - 21:40
(11) А сравнить результат как? Сайт что-то вернет в ответ или как?
   RitterBruder
 
13 - 18.11.17 - 21:48
(12) сайт отправляет в ответ полученные заголовки
   Asmody
 
14 - 18.11.17 - 22:28
хотя, нет. установка CURLOPT_POSTFIELDS атоматом ставит метод POST.
   Asmody
 
15 - 18.11.17 - 22:34
ставь fiddler и сравнивай
   d4rkmesa
 
16 - 18.11.17 - 22:57
(12) Софта полно для мониторинга. Тот же membrane monitor, к примеру.
   D_E_S_131
 
17 - 18.11.17 - 23:52
Спасибо, ребят, попробую.
   oleg_km
 
18 - 19.11.17 - 00:09
(15) А робота нельзя сделать в сайте? Упомянули HTTP - миста сразу: фиддлера установи.
   Fram
 
19 - 19.11.17 - 00:33
(5) вот это где в 1С
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; PHP client; ' . php_uname('s') . '; PHP/' . phpversion() . ')');
   Сергиус
 
20 - 19.11.17 - 00:49
ШифрованноеЗначение - ты уверен что там правильное значение? Как ты его получаешь?
   D_E_S_131
 
21 - 19.11.17 - 12:36
(19) Да знать бы что это вообще такое (код на PHP не я делал, это рабочий пример с githab-а)?

(20) Да, уверен. Я даже из PHP значение подставлял.
   D_E_S_131
 
22 - 20.11.17 - 14:13
В итоге заработало с помощью WinHttpRequest. Видимо далека 1С еще до web-технологий...
   Alligator219
 
23 - 20.11.17 - 14:16
(22) Скорее просто ты далек.
   Fram
 
27 - 22.11.17 - 06:11
(21) в 1с эта фраза должна идти как заголовок


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует