Второй аргумент post
должен быть фактическим FormData
, fd в вашем случае.
axios.post('/saveavatar',
fd,
{headers: {'Authorization': 'Bearer ' + localStorage.getItem('access_token')}})
Причина, по которой он работает в Insomia
, заключается в том, что он заботится о вашем запросе и выясняет, что ему нужно объявить границу, axios
сделает то же самое, но ему нужен действительный FormData
. 117]
Попробуйте xstream (преобразует объекты Java в читаемый XML) для сериализации, а затем напишите свой собственный код PHP для десериализации.
Существует serialized-php-parser
, которая является реализацией Java, которая может анализировать php-сериализованные объекты. В общем, если у вас есть выбор, я бы не рекомендовал сериализовать php в качестве формата обмена, поскольку он не является безопасным для ascii (содержит нулевые байты). Вместо этого используйте формат xml или json. Если вам нужно немного информации о типах, то xmlrpc будет хорошим выбором.
Вы также можете быть заинтересованы в использовании моста PHP / Java ( http://php-java-bridge.sourceforge.net/ ). У него есть собственный протокол. На их сайте сказано, что это быстрое внедрение бриджа.
Сериализация объекта в PHP приведет к сбросу свойств объекта. Результирующая строка не очень сложна.
echo serialize(
array(1, null, "mystring", array("key"=>"value"))
);
Результатов:
a:4:{i:0;i:1;i:1;N;i:2;s:8:"mystring";i:3;a:1:{s:3:"key";s:5:"value";}}
Строка идентифицирует типы данных, длины массивов, индексы и значения массивов, длины строк ... Не потребовалось бы слишком много усилий, чтобы перепроектировать ее и прийти Я думаю, что со своим парсером.
Используйте веб-службы (REST, RPC, SOAP) или любое другое решение, хранящее простой текст, который позволит вам читать / восстановить данные из Java.
Обратите внимание, что есть Java-реализация PHP . Таким образом, вы можете иметь возможность сериализовать объект и передать его в ваш экземпляр Java-PHP, десериализовать и затем вызвать в вашу инфраструктуру Java.
Все это звучит как нечто нечестивое,
Вы можете каким-то образом использовать для этого PHP-функцию var_export () , которая возвращает синтаксический анализ строковое представление объекта, который вы хотите сериализовать.
Формат JSON будет хорошим местом для начала. Существуют реализации для Java , PHP и многих других языков.
Хотя изначально на основе буквенной нотации объекта javascript, JSON оказался удобным для облегченной передачи данных между всеми типами систем.
Теоретически, это, безусловно, возможно. В конце концов, это всего лишь байты, и они могут быть проанализированы. Конечно, десериализованный объект будет содержать только данные, а не любые методы PHP. Если вы хотите этого, вам придется переписать поведение как классы Java, которые напрямую соответствуют классам PHP.
На практике основная проблема заключается в том, что формат сериализации PHP, по-видимому, не указан формально - по крайней мере, нет ссылки на спецификацию в руководстве .
Так что вы можете чтобы понять формат, нужно копаться в коде.
В общем, звучит так, как будто бы намного проще и стабильнее использовать что-то вроде сериализации XML - я уверен, что на обоих языках есть библиотеки, способствующие этому.
PHP и Java используют свои собственные (очевидно разные) схемы сериализации. Однако вы можете использовать формат обмена, который может читать и писать.
Два наиболее очевидных примера - это XML и JSON.
Однако существуют и другие, такие как буфер протокола Google.
Я помню фрагмент кода для Drupal (PHP CMS), где эта функциональность была необходима. Просто нашел его, так что взгляните на Сериализованные объекты узла drupal для java (должен работать с любым сериализованным объектом PHP).
Может быть, вы можете использовать это. Я не знаю, есть ли проблемы с более новыми версиями PHP.