CURL PHP в простой cURL

Я пытаюсь подключить свое приложение Rails к стороннему API. В их примере кода весь код для подключения к их сервису написан на PHP. С PHP не знаком.

Это код:

<?php

// Token generation
$timestamp = time();
$uri = "https://api.website.com/post.json";
$password = "somePassword";

$security_token = sha1($timestamp.$uri.$password);

// Webservice call
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $uri);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$post = array();
$post["timestamp"] = $timestamp;
$post["security_token"] = $security_token;
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
curl_setopt($ch, CURLOPT_POST, true);

// USE THIS CODE TO CHECK THAT SSL CERTIFICATE IS VALID:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, "path/to/certifcate/file/certificate.crt");

$ret = curl_exec($ch);

// Check response
if (curl_errno($ch)) {
    curl_close($ch);
    die("CURL error: ".curl_error($ch));
}

$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($http_code != 200) {
    die("Server error, HTTP code: $http_code");
}

curl_close($ch);

// Parse response
try {
    $json = json_decode($ret);
    var_dump($json);
}
catch(Exception $e) {
    die("Failed to decode server response");
}

?>

Любая помощь в преобразовании этого в обычный cURL будет принята с благодарностью и заранее благодарим!

Я не вижу здесь кода Ruby.

miken32 17.12.2018 18:59

@ miken32 Раньше забыл добавить, но добавил. обычно у меня есть ключ API внутри URL-адреса, и это то, что «позволяет» получить данные, но эта часть: $ security_token = sha1 ($ timestamp. $ uri. $ password); сбивает меня с толку

Rubioli 17.12.2018 19:02

Что в этом непонятного? Это некоторые строки, отправленные в функцию. Документация PHP находится по адресу php.net/sha1. Ваш код Ruby не показывает попытки сделать правильный запрос, даже не включено тело POST.

miken32 17.12.2018 19:30

Я увидел, что код рубина был неправильным, я скоро отправлю правильный @ miken32

Rubioli 17.12.2018 19:36
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
4
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вот как я это сделал, и это сработало.

uri = URI.parse("https://apilink/post.json")
pass = 'supper-password'
timestamp = Time.now

token = Digest::SHA1(timestamp + uri + pass)

request = Net::HTTP::Post.new(uri)
# request.body = "timestamp&security_token"

req_options = {
    use_ssl: uri.scheme == "https",
}

response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
  http.request(request)
end

render json: response.code

Другие вопросы по теме