С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP: сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
 Аватар для rozmakc
0 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 74

команду curl перевести в запрос

11.07.2016, 18:34. Показов 2238. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть некое апи у сайта, вот команда curl:

curl -v -H 'API: dictionary' --key client.key --cert client.crt \
"https://api.profi.ru/web/client/v1/dictionary"

как выполнить её на php ?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.07.2016, 18:34
Ответы с готовыми решениями:

Curl команду превратить в php curl
команда: curl -s -F widget=$WIDGET -F secret=$SECRET -F amouser=$AMOUSER -F amohash=$AMOHASH -F domain=amocrm.ru -F widget=@$file...

Перевести команду из баш в перл
Доброго времени суток, я middleware(тоесть вообще бум-бум в программировании+студент еще ), один из продуктов в компании это мониторин с...

Перевести команду в машинный код
Здравствуйте, помогите перевести команду в машинный код, не понимаю как это делается. Если можно, то поясните. MOV AH,25H

14
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
11.07.2016, 19:08
rozmakc, вроде так
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$url = 'https://api.profi.ru/web/client/v1/dictionary';
 
$headers = [
    'API: dictionary',
];
$options = [
    CURLOPT_URL            => $url,
    CURLOPT_HEADER         => false,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => $headers,
    CURLOPT_SSLKEY         => 'client.key',
    CURLOPT_CAINFO         => 'client.crt',
];
 
$curl = curl_init();
 
curl_setopt_array( $curl, $options );
 
$res = curl_exec( $curl );
 
curl_close( $curl );
echo $res;
0
 Аватар для rozmakc
0 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 74
11.07.2016, 19:23  [ТС]
payload.json этот файл как передать?
и ошибка:
PHP
1
Parse error: syntax error, unexpected '['
не так нужно: array() ?
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
11.07.2016, 19:29
rozmakc, короткая запись объявления массивов
Цитата Сообщение от php.net
Начиная с PHP 5.4 возможно использовать короткий синтаксис определения массивов, который заменяет языковую конструкцию array() на [].
0
 Аватар для rozmakc
0 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 74
11.07.2016, 20:01  [ТС]
ок, разберемся, а вот это:
payload.json этот файл как передать?
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
11.07.2016, 20:03
Цитата Сообщение от rozmakc Посмотреть сообщение
payload.json этот файл как передать?
А как отправлять надо? - как вложение или еще как?
0
 Аватар для rozmakc
0 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 74
11.07.2016, 20:20  [ТС]
Я хз, наверное так же как сертификаты?
а как еще можно?
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
11.07.2016, 20:32
rozmakc, как то так
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
$url = 'https://httpbin.org/post';
/* в коде
$data = [
    'param' => 'value'
];
$request = json_encode($data);
//*/
 
//* из файла
$request = file_get_contents( 'payload.json' );
//*/
 
$headers = [
    'Content-Length: ' . strlen( $request ),
    'Content-Type: application/json'
];
$options = [
    CURLOPT_URL            => $url,
    CURLOPT_POST           => true,
    CURLOPT_HEADER         => false,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => $headers,
    CURLOPT_POSTFIELDS     => $request
];
$curl    = curl_init();
 
curl_setopt_array( $curl, $options );
 
$res = curl_exec( $curl );
 
curl_close( $curl );
 
echo $res;
0
 Аватар для rozmakc
0 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 74
11.07.2016, 21:18  [ТС]
xtче то не работает (( false возвращает(
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
12.07.2016, 06:13
rozmakc, а если так?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
function send_request( $url, $options = [ ] ) {
    $defaults = [
        CURLOPT_URL            => $url,
        CURLOPT_HEADER         => false,
        CURLOPT_RETURNTRANSFER => true,
    ];
    $options  = $options + $defaults;
 
    $curl_handle = curl_init();
 
    curl_setopt_array( $curl_handle, $options );
 
    $res = curl_exec( $curl_handle );
    
    curl_close( $curl_handle );
 
    return $res;
}
 
function api_dictionary() {
    $url = 'https://api.profi.ru/web/client/v1/dictionary';
 
    $headers = [
        'API: dictionary',
    ];
    $options = [
        CURLOPT_HTTPHEADER => $headers,
        CURLOPT_SSLKEY     => 'client.key',
        CURLOPT_SSLCERT    => 'client.crt',
        CURLOPT_SSLCERTPASSWD => 'password', // заменить на пароль сертификата
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => curl_file_create(realpath('payload.json')),
    ];
 
    return send_request( $url, $options );
}
$res = api_dictionary();
var_dump($res);
0
 Аватар для rozmakc
0 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 74
12.07.2016, 08:01  [ТС]
может я что то туплю но:
на денвере ошибка - Call to undefined function curl_file_create()

на хосте 502 Bad Gateway

0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
12.07.2016, 08:31
Цитата Сообщение от rozmakc Посмотреть сообщение
на денвере ошибка - Call to undefined function curl_file_create()
Версия php какая установлена?
Цитата Сообщение от rozmakc Посмотреть сообщение
на хосте 502 Bad Gateway
тот же вопрос.

P.S.: протестировать работу с сертификатами мне не на чем - код пишу почти "в слепую"

Добавлено через 2 минуты
да и API этого сайта я не знаю =\
0
 Аватар для rozmakc
0 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 74
12.07.2016, 09:06  [ТС]
какие доки дали по апи - https://yadi.sk/i/AIFK2wc7tDCoZ
серты и ключи скинул в личку
на хосте версия php 7
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
12.07.2016, 10:14
Лучший ответ Сообщение было отмечено rozmakc как решение

Решение

rozmakc, вот что вышло
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<?php
 
const DEBUG = true;
setup_debug();
 
$client_id = './path/to/client_key'; // имя файла ключа без расширения
 
// тест метода 'dictionary'
// без payload
var_dump( call_api( $client_id, 'dictionary') );
// с payload
$payload   = [ "pservices" ];
var_dump( call_api( $client_id, 'dictionary', $payload ) );
 
// тест метода 'pagination'
$payload = <<<'JSON'
{
    "filter": {
        "static": {
            "models": [
                {
                    "model": "provider.spe******t"
                }
            ]
    }
    },
    "bound": {
        "from": 0,
        "count": 16,
        "scope": "profile.mini"
    },
    "client": {
        "ip": "127.0.0.99",
        "sid": "dktr-sid-123"
    },
    "inbound": [
        {
            "domain": "dktr"
        }
    ]
}
JSON;
 
var_dump( call_api( $client_id, 'pagination', $payload ) );
 
 
function setup_debug() {
    error_reporting( DEBUG ? E_ALL : 0 );
    ini_set( 'display_errors', DEBUG ? 'on' : 'off' );
 
    set_error_handler( function ( $err_no, $err_str, $err_file, $err_line ) {
        if ( ! ( error_reporting() & $err_no ) ) {
            return;
        }
        throw new ErrorException( $err_str, 0, $err_no, $err_file, $err_line );
    } );
}
 
/**
 * @param string $client  client cert file name without extention.
 * @param string $method  API method ['dictionary', 'pagination', 'provisioning']
 * @param mixed  $payload query in json string|array|null
 *
 * @return mixed
 */
function call_api( $client, $method, $payload = null ) {
    $url = "https://api.profi.ru/web/client/v1/";
    if ( $method === 'dictionary' ) {
        $url .= 'dictionary';
    };
    $headers = [
        "API: $method",
    ];
 
    $options      = [
        CURLOPT_HTTPHEADER => $headers,
        CURLOPT_SSLKEY     => realpath( "$client.key" ),
        CURLOPT_SSLCERT    => realpath( "$client.crt" ),
    ];
    $post_options = [ ];
    if ( ! empty( $payload ) ) {
        $payload      = ( is_string( $payload ) ? $payload : json_encode( $payload ) );
        $post_options = [
            CURLOPT_POST       => true,
            CURLOPT_POSTFIELDS => $payload,
        ];
    }
 
    return send_request( $url, $options + $post_options );
}
 
/**
 * @param string $url
 * @param array  $options
 *
 * @return mixed
 */
function send_request( $url, $options = [ ] ) {
    $defaults = [
        CURLOPT_URL            => $url,
        CURLOPT_HEADER         => false,
        CURLOPT_RETURNTRANSFER => true,
    ];
    $options  = $options + $defaults;
 
    $curl_handle = curl_init();
 
    curl_setopt_array( $curl_handle, $options );
 
    $res = curl_exec( $curl_handle );
 
    curl_close( $curl_handle );
 
    return $res;
}
1
 Аватар для rozmakc
0 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 74
17.07.2016, 18:17  [ТС]
Cra3y, спасибо за помощь!
плюсанул, твой вариант не успел опробовать, так как поддержку нашли, они дали пример.
НО, огромное человеческое спасибо за отклик!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.07.2016, 18:17
Помогаю со студенческими работами здесь

Перевести команду в машинный код
Доброго времени суток. Подскажите, как перевести команду jns $-16 в машинный код. информации по команде jns практически нету,...

Перевести команду в машинный код
Помогите перевести команду ассемблера в машинный код. Список команд под спойлером. mov bx,1028 mov bh,cl mov ax,x add bx,258 ...

Перевести команду в машинный код
Есть команды, например: 6 0100 8B C3 MOV AX, BX ; 7 0102 8A C3 MOV AL, BL ; 8 0104 8B CA ...

Требуется перевести команду в машинный код
mul byte ptr sub ,1f2 и еще вопрос лаба суть ее на примере команды mov показать методы адресации делал ее не вот код

Выполнить CURL запрос
Добрый день! Подскажите пожалуйста, как в Python можно выполнить такой CURL POST запрос: curl --max-time 5 --user dev : pas...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru