HTTP Put через php-клиент

Я пишу небольшое приложение для сайта бухгалтерского учета под названием Xena.biz.

В системе есть API, который использует для подключения oAuth2. Все, что я разобрал - я отлично могу найти нужную мне информацию. Теперь мне нужно отправить строку PUT обратно Зене - вот где я не могу это понять.

Система построена на файле XenaClient.php, который содержит все вызовы авторизации и все запросы.

Вот пример того, как я получаю информацию:

<?
require('XenaClient.php');
const CLIENT_ID     = 'SECRET';
const CLIENT_SECRET = 'VERY SECRET'; 
$xenaclient = new XenaOAuth2Client(CLIENT_ID, CLIENT_SECRET);
$xenaclient->setAccessToken($_COOKIE["MaskedCookieName"]);

$ordertask = $xenaclient->fetch('https://my.xena.biz/Api/Fiscal/'.$_GET["fiscal"].'/OrderTask/'.$_GET["orderId"]);
var_dump($ordertask);
?>

Но теперь я хочу ОТПРАВИТЬ информацию через PUT. Согласно сценарию XenaClient.php я должен использовать команду $ xenaclient-> fetch ($ url, $ parameters);

Так что это мой выстрел

require('XenaClient.php');
const CLIENT_ID     = 'SECRET';
const CLIENT_SECRET = 'VERY SECRET'; 
$xenaclient = new XenaOAuth2Client(CLIENT_ID, CLIENT_SECRET);
$xenaclient->setAccessToken($_COOKIE["MaskedCookieName"]);


$xenaclient->fetch('https://my.xena.biz/Api/Fiscal/96946/Order/243936250/Confirmation',array('ConfirmationDate'=>NULL,'ConfirmationReportLayoutId'=>261205291));
?>

Это ничего не возвращает назад и не создает желаемого эффекта внутри системы бухгалтерского учета. Никакой помощи от самих Зен не получить, поэтому я прошу вас, ребята, надеюсь, вы сможете мне помочь.

Вот несколько указателей:

Ресурс API: https://dev.xena.biz

XenaClient.php: https://github.com/EG-BRS/Xena.ExampleApp.PHP/blob/master/XenaClient.php

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать 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
0
28
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

XenoOAuth2Client :: выборка сообщает вам, что параметр в третьих функции выборки - хотя и необязательный - определяет метод запроса. По умолчанию это GET (XenaOAuth2Client::HTTP_METHOD_GET), поэтому, если вы хотите PUT, вы должны явно указать соответствующий параметр PUT (другие методы см. константы класса XenoOAuth2Client:

$xenaclient->fetch(
    'https://my.xena.biz/Api/Fiscal/96946/Order/243936250/Confirmation',
    array('ConfirmationReportLayoutId'=>261205291),
    XenaOAuth2Client::HTTP_METHOD_PUT
);

большинство API сегодня используют json, возможно должен быть json ...

$xenaclient->fetch(
    'https://my.xena.biz/Api/Fiscal/96946/Order/243936250/Confirmation',
    json_encode(array('ConfirmationReportLayoutId'=>261205291)),
    XenaOAuth2Client::HTTP_METHOD_PUT
);

Я понимаю, что вы имеете в виду, но это не решило мою проблему. Мог ли я неправильно отправить свой массив? Все данные настроены на Json / xml на сервере. Правильно ли я отправляю свою информацию?

Xelot 23.06.2018 15:23

@Xelot Я предполагаю, что вы действительно получаете токен доступа, как в github.com/EG-BRS/Xena.ExampleApp.PHP/blob/master/index.php

Jakumi 23.06.2018 15:27

также согласно api dev.xena.biz/api/#!/Order324532ApiOrder/… ConfirmationDate является необязательным, поэтому вы можете оставить его или сделать целым числом (временная метка unix).

Jakumi 23.06.2018 15:30

Я знаю, я пытался поставить текущую временную метку unix на запрос - все равно ничего не происходит.

Xelot 23.06.2018 15:31

@Xelot Я сейчас обдумываю, если $ parameters должны быть строкой в ​​кодировке json ... это будет означать ... ну ... я записываю это в свой ответ

Jakumi 23.06.2018 15:40

@Xelot также, вы должны посмотреть на возвращаемое значение этой функции (возможно, var_dump) или опубликовать сообщения об ошибках, если есть

Jakumi 23.06.2018 15:46

ВЫ, поистине спасатель жизни Джакуми :) - третьим параметром было недостающее звено. Я весь день пытался json_encode этот массив, но теперь он работает !! ОГРОМНОЕ СПАСИБО

Xelot 23.06.2018 15:54

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