2016-04-23 115 views
0

我在php中製作一個管理面板來控制我的Java應用程序。 我知道如何發送一個請求在Java到PHP。例如, 我有此鏈接:如何發送一些從PHP頁面到Java應用程序?

myPage.com/admin/statusServers&id=10(此頁打印f.e 「OK」)

在Java中,我能讀懂這個 「OK」,但我怎麼送"request"從PHP到Java? 事情是這樣的:

myPage.com/admin/resetApp&pass=312&user=123 

我的目的是讓應用程式收到此,驗證用戶通組合,然後重置的東西。 我是否需要製作一個延遲1秒的無限循環來檢查請求,或者類似的東西?

+0

你能解釋一下其中的是java和地方在於PHP運行?在同一臺服務器上?爲什麼你想要一個Java前端應用程序?當兩件事情在同一臺機器上運行時,他們有更多的溝通方式。 – zapl

+0

php和java在同一臺機器上運行 – Larry

+0

修復語法,拼寫等 – Prune

回答

2

java和php在同一臺機器上?

PHP到Java

http://php-java-bridge.sourceforge.net/pjb/

所以,我有一個非常基本的測試設置,看看我是否可以從一個PHP網頁將數據發送到同一臺服務器上運行的Java應用程序。

的Java應用程序是死的簡單,它只是在其上偵聽數據

import java.io.*; 
import java.net.*; 

class TCPServer 
{ 
    public static void main(String argv[]) throws Exception 
     { 
     String clientSentence; 
     String capitalizedSentence; 
     ServerSocket welcomeSocket = new ServerSocket(6789); 

     while(true) 
     { 
      Socket connectionSocket = welcomeSocket.accept(); 
      BufferedReader inFromClient = 
       new BufferedReader(new InputStreamReader(connectionSocket.getInputStream())); 
      DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream()); 
      clientSentence = inFromClient.readLine(); 
      System.out.println("Received: " + clientSentence); 
      capitalizedSentence = clientSentence.toUpperCase() + '\n'; 
      outToClient.writeBytes(capitalizedSentence); 
      connectionSocket.close(); 
     } 
     } 
} 

方法1

$host = "tcp://localhost"; 
$port = 6789; 
$data = 'test' . PHP_EOL; 
$errstr = ''; 
$errno = ''; 

if (($fp = fsockopen($host, $port, $errno, $errstr, 3)) === FALSE) 
    echo "$errstr ($errno)"; 
else { 
    print 'SUCCESS!<br />'; 
    fwrite($fp, $data); 
    while (! feof($fp)) { 
     echo fgets($fp, 4096); 
    } 
    fclose($fp); 
} 

方法2

$host = "localhost"; 
$port = 6789; 
$data = 'test'; 

if (($socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === FALSE) 
    echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()); 
else 
{ 
    echo "Attempting to connect to '$host' on port '$port'...<br>"; 
    if (($result = socket_connect($socket, $host, $port)) === FALSE) 
     echo "socket_connect() failed. Reason: ($result) " . socket_strerror(socket_last_error($socket)); 
    else { 
     echo "Sending data...<br>"; 
     socket_write($socket, $data, strlen($data)); 
     echo "OK<br>"; 

     echo "Reading response:<br>"; 
     while ($out = socket_read($socket, 2048)) { 
      echo $out; 
     } 
    } 
    socket_close($socket);  
} 

TCP套接字編輯

JAVA到PHP

有很多方法可以做到這一點 我想用來從PHP

if(isset($_GET["user"]) && isset($_GET["pass"])){ 
    echo system("java myjavaprogram . " .$_GET["user"]) 
    // Then args will be an array containing the strings $_GET["user"] 
} 

和Java程序調用操作命令的任何系統接收命令,併發射行動

public static void main(String [] args) { 
    String user = args[0]; // user 
    // etc.. etc 
} 

您還可以使用捲曲parea使從PHP

的任何請求
if(isset($_GET["user"]) && isset($_GET["pass"])){ 

    $ch = curl_init("http://127.0.0.1:8080/servlet"); 
    $fp = fopen("test.txt", "w"); 

    curl_setopt($ch, CURLOPT_FILE, $fp); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 

    curl_exec($ch); 
    curl_close($ch); 
    fclose($fp); 
} 

我希望我幫助