За последние 24 часа нас посетили 22867 программистов и 1238 роботов. Сейчас ищут 705 программистов ...

php https post

Тема в разделе "PHP для новичков", создана пользователем Эльнар, 9 июн 2021.

  1. Эльнар

    Эльнар Активный пользователь

    С нами с:
    11 апр 2018
    Сообщения:
    15
    Симпатии:
    0
    Доброго дня форумчане, помогите написать скрип для отправки данных методом post на рhp
    во вложение скрин postman
     

    Вложения:

  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.824
    Симпатии:
    738
    Адрес:
    Татарстан
    покажите свои наработки - или вам в раздел "сделайте за меня"
     
  3. Эльнар

    Эльнар Активный пользователь

    С нами с:
    11 апр 2018
    Сообщения:
    15
    Симпатии:
    0
    Наработок нет, мне раздел покажи пример остальное я сделаю по образу и подобию. Раньше с другими api обычно отправляется Content-Type: application/JSON а тут надо "Content-Type: multipart/form-data", мне бы пример остальное все одинаково будет, только разные запросы
    PHP:
    1. <?php
    2. $curl = curl_init();
    3. $message=array("cmd"=>"accounts", "token"=>"11111111111");
    4. //echo "\r\n";
    5. CURLOPT_URL => "url",
    6. CURLOPT_RETURNTRANSFER => true,
    7. CURLOPT_ENCODING => "",
    8. CURLOPT_MAXREDIRS => 10,
    9. CURLOPT_TIMEOUT => 30,
    10. CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    11. CURLOPT_CUSTOMREQUEST => "POST",
    12. CURLOPT_POSTFIELDS => json_encode($message),
    13. CURLOPT_HTTPHEADER => array(
    14. "Cache-Control: no-cache",
    15. "Content-Type: application/JSON"
    16. )
    17. ));
    18. $response = curl_exec($curl);
    19. $err = curl_error($curl);
    20. curl_close($curl);
    21. if ($err) {
    22. //echo "cURL Error #:" . $err;
    23. } else {
    24. echo $response;
    25. ?>
     
  4. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    CURL сам сделает multipart/form-data, если вы будете передавать в POSTFIELDS массив (ассоциативный).
    --- Добавлено ---
    Испортил вас JSON. Не знаете основ. :D
     
  5. Эльнар

    Эльнар Активный пользователь

    С нами с:
    11 апр 2018
    Сообщения:
    15
    Симпатии:
    0
    убрал json оставил только массив все равно не работает
     
  6. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.824
    Симпатии:
    738
    Адрес:
    Татарстан
    ну тут наверное нужно массив передать.. мы не знаем чего у вас там в message
     
  7. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    @ADSoft, $message в начале показан.
    --- Добавлено ---
    И чЁ? Я написал, как это в общем работает. Если у вас не работает, значит, причина в чем-то другом!
    --- Добавлено ---
    Свой Content-Type уберите! Возможно, заработает.
     
  8. Эльнар

    Эльнар Активный пользователь

    С нами с:
    11 апр 2018
    Сообщения:
    15
    Симпатии:
    0
    в руководстве написано данные при POST запросе необходимо передавать в Body
    где это body прописывается, в постман понятно поставил галочки все работает
    PHP:
    1. <?php
    2. $curl = curl_init();
    3. CURLOPT_URL => "url",
    4. CURLOPT_RETURNTRANSFER => true,
    5. CURLOPT_ENCODING => "",
    6. CURLOPT_MAXREDIRS => 10,
    7. CURLOPT_TIMEOUT => 30,
    8. CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    9. CURLOPT_CUSTOMREQUEST => "POST",
    10. CURLOPT_POSTFIELDS => array("cmd"=>"accounts", "token"=>"3d3333a2-f4c9-403a-acb5-56d855b46e71"),
    11. ));
    12. $response = curl_exec($curl);
    13. $err = curl_error($curl);
    14. curl_close($curl);
    15. if ($err) {
    16. //echo "cURL Error #:" . $err;
    17. } else {
    18. echo $response;
    19. }
    20. ?>
     
  9. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    Делай POST по старинке (CURLOPT_POST). Процитированная опция, возможно, препятствует кодированию.
     
  10. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.752
    Симпатии:
    1.322
    Адрес:
    Лень
    PHP:
    1.     protected function stream( string $link, array $data, string $request ): array
    2.     {
    3.         //$m = microtime ( true );
    4.        
    5.         $curl = curl_init ();
    6.        
    7.         curl_setopt_array ( $curl,
    8.         [
    9.             CURLOPT_URL             => $link,
    10.             CURLOPT_POSTFIELDS        => json_encode ( $data ),
    11.             CURLOPT_RETURNTRANSFER  => true,
    12.             CURLOPT_FOLLOWLOCATION  => true,
    13.             CURLOPT_CUSTOMREQUEST    => $request,
    14.             CURLOPT_HTTPHEADER      => [
    15.                 'Content-Type: application/json',
    16.                 'X-Leeloo-AuthToken: ' . $this -> getData( 'leeloo.token' ),
    17.             ],
    18.             CURLOPT_POST            => true,
    19.             CURLOPT_TIMEOUT            => 5,
    20.             CURLOPT_AUTOREFERER        => true,
    21.             CURLOPT_SSL_VERIFYPEER    => false,
    22.             CURLOPT_SSL_VERIFYHOST    => false,
    23.         ] );
    24.        
    25.         // string(42) "Too many requests, please try again later."
    26.         $response = curl_exec ( $curl );
    27.        
    28.         curl_close ( $curl );
    29.        
    30.         //echo 'CURL_INIT - ' . ( microtime ( true ) - $m ) . PHP_EOL;
    31.        
    32.         return json_decode ( ( string ) $response, true ) ?? [ 'response' => $response ];
    33.     }
     
  11. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    861
    Симпатии:
    132
    Так тяжело набрать в гугле
    Код (Text):
    1. php CURLOPT_POSTFIELDS
    PHP:
    1. CURLOPT_POSTFIELDS => http_build_query($data),
    А что там у Вас в $request, ведомо только Вам.
     
  12. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.752
    Симпатии:
    1.322
    Адрес:
    Лень
  13. Эльнар

    Эльнар Активный пользователь

    С нами с:
    11 апр 2018
    Сообщения:
    15
    Симпатии:
    0
    всем спасибо с проблемой разобрался,
    1. "Content-Type: application/x-www-form-urlencoded" а не Content-Type: multipart/form-data (дезинформация от разработчика)
    2. url должен был быть https а не http (в личном кабинете адрес сервера запросов указан http, косяк разработчика)
     
  14. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    Это для URL-кодировки, а ТС просил multipart/form-data.

    Оно может быть пофиг, как это часто бывает. А разрабы указывают multipart/form-data как более вменяемую в общем случае.
     
  15. Эльнар

    Эльнар Активный пользователь

    С нами с:
    11 апр 2018
    Сообщения:
    15
    Симпатии:
    0
    все таки основная причина была https, c http ответ от сервера не приходил вообще,
    завтра попробую multipart/form-data поставить, в общем я немного познакомился с api itoolabs, что то я тупанул можно было ссылку давно отправить http://wiki.itoolabs.com/rest_api, у них даже wiki http стоит