【问题标题】:How to send something from php page to java application?如何将内容从 php 页面发送到 java 应用程序?
【发布时间】:2016-04-23 20:10:09
【问题描述】:

我正在用 php 制作一个管理面板来控制我的 Java 应用程序。 我知道如何在 java 中向 php 发送请求。例如, 我有这个链接:

myPage.com/admin/statusServers&id=10(此页面打印 f​​.e "OK")

在 Java 中,我可以读取这个“OK”,但是如何将"request" 从 php 发送到 java? 像这样的:

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

我的目的是让应用程序接收此信息,验证用户密码组合,然后重置某些内容。 我是否需要以 1 秒的延迟进行无限循环来检查请求或类似的东西?

【问题讨论】:

  • 你能解释一下那个java和那个php在哪里运行吗?在同一台服务器上?为什么你想要一个 java 应用程序的 php 前端?当这两个东西在同一台机器上运行时,它们就有更多的通信方式。
  • php和java在同一台机器上运行
  • 修正语法、拼写等问题

标签: java php get request


【解决方案1】:

java和php在同一台机器上?

PHP 到 JAVA

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

所以,我有一个非常基本的测试设置,看看我是否可以将数据从 php 网页发送到在同一服务器上运行的 java 应用程序。

Java 应用程序非常简单,它只是在 TCP 套接字上侦听数据

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();
         }
      }
}

方法一

$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);
}

方法二

$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);      
}

编辑

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 
}

你也可以使用 curl 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);
}

希望对你有所帮助

【讨论】:

    猜你喜欢
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多