2013-04-24 138 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