Как прочитать ответ сервлета с помощью PHP - PullRequest
3 голосов
/ 25 мая 2011

Я хотел бы отправить запрос сервлету Java из PHP, получить ответ от него и показать его на странице PHP. Как это сделать?

Спасибо и всего наилучшего

Abishek R Srikaanth

Ответы [ 4 ]

6 голосов
/ 25 мая 2011

Если все, что вам нужно, - это напечатать ответ GET-запроса на обычный ванильный ресурс в ответ PHP, тогда вы можете использовать file_get_contents() для этого.

<?php echo file_get_contents("http://example.com/someservlet"); ?>

Будет вызван метод сервлета doGet(), и любой ответ, который он возвращает (который может быть даже переадресованным JSP), будет напечатан в виде строки в ответ PHP.

Если вы хотите немного более детализированного управлениянапример, используя POST или что-то, вместо этого перейдите на curl()Связанное руководство по PHP содержит несколько примеров.

Независимо от способа, имейте в виду, что всякий раз, когда он возвращает HTML, вы должны убедиться, что в итоге вы получите правильный HTML.Например, вложение тегов <html> недопустимо.Если вы не уверены, пропустите страницу PHP через w3 validator .В противном случае вам лучше проанализировать HTML-код, чтобы извлечь интересующие элементы <body> или использовать вместо него <iframe>.

<iframe src="http://example.com/someservlet"></iframe>
1 голос
/ 25 мая 2011

Это ситуация, которую можно переосмыслить, но если других вариантов нет ...

Если есть способ обновить портлет, я бы порекомендовал создать какую-то форму.вызова сервиса - SOAP, пользовательский RPC и т. д. - на стороне Java.Технически это самый правильный способ сделать что-либо.

В противном случае, если это простой запрос GET, используйте file_get_contents.

Если это должен быть POST / PUT / DELETE,тогда вы можете использовать cURL .Преимущество cURL заключается в том, что он может обрабатывать симулированные сеансы, а это значит, что вы сможете смоделировать вход в систему и действия, выполняемые после этого (хотя и не без особых сложностей).и вам нужно POST / PUT / DELETE, тогда библиотека streams может дать вам то, что вам нужно.

Если у вас нет библиотеки потоков или cURL, и вам нужночтобы POST / PUT / DELETE, есть другие средства для достижения этой цели, но, возможно, вам следует действительно переосмыслить эту ситуацию.вам нужно будет приручить Spectral Wolf .Призрачный Волк боится только огня.Я больше не могу вам помочь, но если вы овладеете Призрачным Волком, он будет вас вести.Godspeed.

1 голос
/ 25 мая 2011

Если я правильно вас понимаю, вы хотите прочитать ответ сервлета в php, а затем вывести его из php?

Вы можете использовать file_get_contents для URL (пробал не самый лучший способ, но для простоты это проще всего), а затем просто отображать вывод.

Например:

$content = file_get_content('http://www.google.com');
echo $content;

Но если вы хотите иметь возможность войти в систему или использовать сеанс на стороне сервлета, вам нужно подумать о чем-то другом. Поскольку каждый запрос к серверу от php будет новым, он не хранит файлы cookie и т. Д., Как это делают браузеры.

Надеюсь, это поможет

0 голосов
/ 25 мая 2011

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

Или вы можете использовать экспериментальный и не рекомендуемый PHP / Java Integration модуль.

...