2011-05-25 24 views

回答

6

如果您只想將外部資源普通香草的GET請求的響應打印到PHP響應中,那麼您可以使用file_get_contents()

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

servlet的doGet()方法將被調用並返回任何響應(其甚至可以被轉發的JSP)將被打印爲字符串到PHP響應。

如果你想要更細緻的控制,例如使用POST或其他東西,然後前往curl()。鏈接的PHP手冊包含幾個例子。

無論如何,請注意,無論何時返回HTML,您都應該確保以最終有效的HTML結束。例如,嵌套<html>標籤是非法的。如果您不確定,請將PHP頁面通過w3 validator。否則,您最好不得不解析HTML以提取<body>感興趣的片段,或者使用代替。

<iframe src="http://example.com/someservlet"></iframe> 
+0

有沒有辦法用file_get_contents檢查響應頭上的狀態碼? – 2011-06-06 12:07:48

+0

['http_response_header'](http://www.php.net/manual/en/reserved.variables.httpresponseheader.php)數組可用。 – BalusC 2011-06-06 12:11:23

0

如果你真的要做到這一點,你可以創建一個Java應用程序,需要參數填充請求和響應對象,實例化一個servlet,運行正確的方法,獲取結果並顯示它,然後從PHP中調用此Java應用程序。

或者你可以使用實驗和不推薦PHP/Java Integration模塊。

1

如果我正確理解你,你想讀取一個servlet在PHP中的迴應,然後從PHP輸出它?

你可以使用file_get_contents給url(Probaly不是最好的方法,但爲了簡單起見,它是最簡單的),然後只是回顯輸出。

例如:

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

但是,如果你希望能夠登錄或使用會話在servlet的方面,你需要考慮的東西。由於每個從php到服務器的請求將是一個新的,它不會存儲cookie等,就像瀏覽器一樣。

希望幫助

1

這是可能做好重新思考的情況,但是,如果沒有其他的選擇...

如果實際更新portlet的方式,然後我會建議在Java端創建某種形式的服務調用 - SOAP,自定義RPC等。從技術上講,這是做事最正確的方式。

如果這是一個簡單的GET請求,那就使用file_get_contents。

如果必須是POST/PUT/DELETE,那麼您可以使用cURL。 cURL還有能夠處理模擬會話的好處,這意味着您可以模擬登錄和隨後的操作(儘管不是沒有一定困難)。

如果您沒有cURL並且需要POST/PUT/DELETE,那麼streams庫可能能夠爲您提供所需的內容。

如果你沒有流庫或cURL,你需要POST/PUT/DELETE,那麼有other means完成,但也許你應該真的重新考慮這種情況。

如果以上所有都不起作用,那麼您將需要馴服Spectral Wolf。光譜狼只擔心火災。我不能再幫助你,但是如果你掌握了光譜狼,他會引導你。一帆風順。