Не сериализируйте в Java сериализированный объект php

Второй аргумент post должен быть фактическим FormData, fd в вашем случае.

axios.post('/saveavatar',
              fd,
              {headers: {'Authorization': 'Bearer ' + localStorage.getItem('access_token')}})

Причина, по которой он работает в Insomia, заключается в том, что он заботится о вашем запросе и выясняет, что ему нужно объявить границу, axios сделает то же самое, но ему нужен действительный FormData. 117]

14
задан karim79 13 April 2009 в 09:19
поделиться

11 ответов

Попробуйте xstream (преобразует объекты Java в читаемый XML) для сериализации, а затем напишите свой собственный код PHP для десериализации.

0
ответ дан 1 December 2019 в 05:56
поделиться

Существует serialized-php-parser , которая является реализацией Java, которая может анализировать php-сериализованные объекты. В общем, если у вас есть выбор, я бы не рекомендовал сериализовать php в качестве формата обмена, поскольку он не является безопасным для ascii (содержит нулевые байты). Вместо этого используйте формат xml или json. Если вам нужно немного информации о типах, то xmlrpc будет хорошим выбором.

18
ответ дан 1 December 2019 в 05:56
поделиться

Вы также можете быть заинтересованы в использовании моста PHP / Java ( http://php-java-bridge.sourceforge.net/ ). У него есть собственный протокол. На их сайте сказано, что это быстрое внедрение бриджа.

0
ответ дан 1 December 2019 в 05:56
поделиться

Сериализация объекта в 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";}}

Строка идентифицирует типы данных, длины массивов, индексы и значения массивов, длины строк ... Не потребовалось бы слишком много усилий, чтобы перепроектировать ее и прийти Я думаю, что со своим парсером.

0
ответ дан 1 December 2019 в 05:56
поделиться

Используйте веб-службы (REST, RPC, SOAP) или любое другое решение, хранящее простой текст, который позволит вам читать / восстановить данные из Java.

0
ответ дан 1 December 2019 в 05:56
поделиться

Обратите внимание, что есть Java-реализация PHP . Таким образом, вы можете иметь возможность сериализовать объект и передать его в ваш экземпляр Java-PHP, десериализовать и затем вызвать в вашу инфраструктуру Java.

Все это звучит как нечто нечестивое,

0
ответ дан 1 December 2019 в 05:56
поделиться

Вы можете каким-то образом использовать для этого PHP-функцию var_export () , которая возвращает синтаксический анализ строковое представление объекта, который вы хотите сериализовать.

3
ответ дан 1 December 2019 в 05:56
поделиться

Формат JSON будет хорошим местом для начала. Существуют реализации для Java , PHP и многих других языков.

Хотя изначально на основе буквенной нотации объекта javascript, JSON оказался удобным для облегченной передачи данных между всеми типами систем.

5
ответ дан 1 December 2019 в 05:56
поделиться

Теоретически, это, безусловно, возможно. В конце концов, это всего лишь байты, и они могут быть проанализированы. Конечно, десериализованный объект будет содержать только данные, а не любые методы PHP. Если вы хотите этого, вам придется переписать поведение как классы Java, которые напрямую соответствуют классам PHP.

На практике основная проблема заключается в том, что формат сериализации PHP, по-видимому, не указан формально - по крайней мере, нет ссылки на спецификацию в руководстве .

Так что вы можете чтобы понять формат, нужно копаться в коде.

В общем, звучит так, как будто бы намного проще и стабильнее использовать что-то вроде сериализации XML - я уверен, что на обоих языках есть библиотеки, способствующие этому.

6
ответ дан 1 December 2019 в 05:56
поделиться

PHP и Java используют свои собственные (очевидно разные) схемы сериализации. Однако вы можете использовать формат обмена, который может читать и писать.

Два наиболее очевидных примера - это XML и JSON.

Однако существуют и другие, такие как буфер протокола Google.

15
ответ дан 1 December 2019 в 05:56
поделиться

Я помню фрагмент кода для Drupal (PHP CMS), где эта функциональность была необходима. Просто нашел его, так что взгляните на Сериализованные объекты узла drupal для java (должен работать с любым сериализованным объектом PHP).

Может быть, вы можете использовать это. Я не знаю, есть ли проблемы с более новыми версиями PHP.

2
ответ дан 1 December 2019 в 05:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: