2013-04-24 166 views
0

我正在嘗試在PHP和Java之間進行通信。PHP可以向HTTP請求HTTP嗎?

這是我想要做的。 PHP將參數ID傳遞給Java文件。

Java獲取ID並運行一些腳本並返回一個ARRAY到PHP。

我已經閱讀了很多諸如PHP/Java橋,SOAP,RestCall ...

但我無法發現其中一個作品。基本上是我不知道如何配置。

我想找一些我能理解的簡單例子。而且我不需要使用PHP/Java Bridge。

更容易的事情會做。

更新。

* 我曾試圖捲曲調用Java文件,在$結果= curl_exec($捲曲)返回在Java中的全部代碼。*

我甚至嘗試的Java Servlet,這也只返回Java中的整個CODE。

我要的是PHP做一個GET請求到Java,Java將檢測的GET請求並獲得一個參數ID。運行一些進程並將ARRAY返回給PHP。

我希望它只在HTTP請求中完成。

但我無法弄清楚它是如何工作的。我甚至嘗試過HTTPComponent。

請幫助並向我展示PHP和Java文件中的簡單示例。

我甚至跟着這個servlet http://brajeshwar.com/2008/handling-http-get-requests-in-java-servlets/ CGI http://www.javaworld.com/jw-01-1997/jw-01-cgiscripts.html?page=3 ,而不僅是這些。很多例子。但沒有工作。

我錯過了什麼嗎?我會提供更多細節。我使用XAMPP,每個項目和文件都將在我的htdocs中。

所有請求將是這樣的 「http://本地主機/測試/ ......」

謝謝。


對不起,我沒有說清楚。

Java文件是普通的Java文件,如

public class HelloWorld { 
String hw = "Hello World"; 

public void getHelloWorld() { 

      System.out.println("abc"); 
} 

    public static void main(String [] args){ 
    System.out.println("abc"); 
    } 

} 

謝謝。


更新2

這是我的下一個問題。

像那些捲曲,休息,Cgi調用..它實際上調用到.Java文件嗎? 結果返回的是.Java的完整源代碼。

這是因爲沒有編譯器來編譯Java類的權利? 我把Java文件放在xampp/htdocs中,我使用Netbeans編譯它。

所以當我從PHP調用時,沒有人編譯它? 糾正我,如果我錯了?

所以我應該把.Java文件放在Tomcat這樣的服務器上嗎?或者編譯它的方法? 我試圖通過本地主機放在Tomcat的webapps,並連接到它:8080 /測試/ test.java

還給我錯誤404

如何訪問到的.java FIL使用Web瀏覽器? 請幫幫我。

謝謝。

已解決

使用RESTFul工作Java。 我可以讓Curl調用Java。

關注這個guide

在Java初學者和我一樣很清楚。


回答

0

我建議你閱讀Spring MVC並創建一個REST完整的web服務。調用一個可執行的java類可能會工作,但我相信這是不常見的做法。

下面是一個可能的控制器類調用的示例。

@Controller 
public class TestController extends BaseController { 

    @RequestMapping(value = "/rest/helloworld", method = RequestMethod.GET) 
    public @ResponseBody 
    String helloWorld(HttpServletRequest req) 
      throws Exception { 
     return "hello world"; 
    } 
} 

這是相當先進的java,但特別是如果你想在Spring中配置它。在這篇小文章中,我無法詳細解釋所有這些。但是這個網站可能會給你更多的啓發http://viralpatel.net/blogs/tutorial-spring-3-mvc-introduction-spring-mvc-framework/

0

儘量休息

<?php 
$url = 'JAVA_PAGE_URL'; 
// Open a curl session for making the call 
$curl = curl_init($url); 
// Tell curl to use HTTP POST 
curl_setopt($curl, CURLOPT_POST, true); 
// Tell curl not to return headers, but do return the response 
curl_setopt($curl, CURLOPT_HEADER, false); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
// Set the POST arguments to pass to the Sugar server 
$parameters = array('id'=>$id); 
$json = json_encode($parameters); 

$postArgs = 'method=login&input_type=JSON&response_type=JSON&rest_data=' . $json; 
curl_setopt($curl, CURLOPT_POSTFIELDS, $postArgs); 
// Make the REST call, returning the result 
$response = curl_exec($curl); 

// Close the connection 
curl_close($curl); 
// Convert the result from JSON format to a PHP array 
$result = json_decode($response); 
?> 
+0

感謝您的回覆。此代碼之前我曾嘗試過。但是,JAVA中的代碼應該如何呢?打印$結果給我什麼都沒有,並打印$迴應給我在JAVA的整個源代碼。我寫了一個簡單的JAVA,只打印Hello World。我不知道JAVA如何捕獲ID並返回一個JSON。 – 2013-04-24 08:48:51

0

的exmple我希望這會給你一些更好的想法用捲曲()REST風格的Web服務。

$curl = curl_init();  
$url = "http:"; 
$fields = 8; 
curl_setopt($curl, CURLOPT_URL, $url); 
curl_setopt($curl, CURLOPT_POST, true); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
//To use https 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($fields)); 
curl_setopt($curl, CURLOPT_COOKIEJAR, "cookie.txt"); 
curl_setopt($curl, CURLOPT_COOKIEFILE, "cookie.txt"); 
$curl_response = curl_exec($curl); 

你可以在php中操作$ curl_reponse。

+0

感謝您的回覆。我知道如何使用捲曲。但是如何curl調用一個java文件。我試圖把java文件的位置,例如。 http://localhost/test/test.java,並打印$ curl_response。它打印出test.java中的完整源代碼。我想發送一個參數ID到test.java,並且test.java將會處理它並返回一個數組。謝謝 – 2013-04-24 08:44:52

+0

好吧,但你已經提到過關於你的問題的所有類型的網絡服務,你沒有提到你正在嘗試在獨立的應用 – gks 2013-04-24 08:47:18

+0

對不起,我沒有說清楚。 – 2013-04-24 08:50:58