Nano Hash - криптовалюты, майнинг, программирование

Проблема с библиотекой php cURL и запросом REST POST

У меня возникли проблемы с запросом REST POST после того, как API, который я отправляю, опубликовал окончательный выпуск своего API. Он работал без происшествий, и мне сказали, что с новой версией сервер более строг в отношении типа «application/json». Следующая команда cli curl работает плавно:

cat json.txt|curl -v -k -u user:password -F 'exchangeInstance=@-;type=application/json'  https://my.url.here

Однако мне нужно выполнить это в коде. Используя библиотеки php curl, у меня есть простой тестовый скрипт, который выглядит так:

  $post = array(
    "exchangeInstance" => $json_string,
    "type" => "application/json",
  );
  $url = 'myurlhere';

  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
  curl_setopt($ch, CURLOPT_USERPWD, "user:pass");
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $post);

  $result = curl_exec($ch);
  $info = curl_getinfo($ch);

  var_dump($post);
  var_dump($result);
  echo $result;
  var_dump($info);

Когда я читаю документацию, Content-type в заголовке должен быть автоматически установлен на «multipart/form», если я передаю массив как CURLOPT_POSTFIELDS, а затем я устанавливаю тип для передачи элемента на «application/json» в массив.

Однако API не получал от меня POST-запросов. И я получаю от них сообщение об ошибке, которое ясно указывает на то, что они получают запрос GET. Как это может быть? Что мне не хватает?

21.02.2013

  • у вас есть followlocation = true. если сервер выполняет перенаправление, этот URL-адрес перенаправления будет получен через GET, даже если вы начали с POST для начала. выключи его и посмотри, что тебе вернется. 21.02.2013
  • Ух ты. Это, безусловно, соответствует тому, с чем я имею дело, но я не могу найти никакой документации по этому поводу. Есть зацепки? У меня такое ощущение, что я аутентифицируюсь в точке А и перенаправляюсь в точку Б. Меня перенаправляют на определенный порт, но я использую тот же URL-адрес, что и в команде CLI. 22.02.2013

Ответы:


1

завиток -F !== -d

$post = array(
    "exchangeInstance" => sprintf('@%s;type=application/json', $json_string),   
);
21.02.2013
  • Это очень интересно. Слава Богу за умных людей. Я уверен, что это часть проблемы, но не все на данный момент. Я отпишусь, когда узнаю больше - Спасибо! 22.02.2013
  • Итак, на самом деле это не работает, если я не передаю путь к файлу. В противном случае он отправляет строку, дополненную символом @... Я не нахожу способа установить тип содержимого отдельного заголовка mime, состоящего из нескольких частей, без передачи ему файла. Мне кажется, должен быть лучший способ, чем записать мою строку во временный файл, а затем отправить ее в библиотеку curl... есть идеи? 25.02.2013
  • stackoverflow.com/questions/4074936/ 26.02.2013
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..