我正在尝试设置PHP Java Bridge,我可以从PHP调用Java方法,但是我无法在我的java类中获取请求对象(HttpServletRequest)。我怎么能得到它?
我的PHP源代码是这样的。
<?php require_once("http://localhost:8080/PJBridge/java/Java.inc");
echo "PHP JAVA Bridge -- Calculator Test Application <br>"
$Calc= new java("test.math.Calc");
$val1 = 20;
$val2 = 10;
echo "<br> Addition of $val1 and $val2 is";
echo $Calc->add($val1,$val2);
$hello = new java("test.Hello");
echo "<br>";
echo $hello->sayHello("PHP from Java");
echo "<br>";
?>
Java Class源代码如下: -
public class Hello implements ServletRequestAware{
HttpServletRequest request;
public Hello(){
}
@Override
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
public String sayHello(String name){
return "Hello " + name ;
}
}
我得到了预期的结果,但我需要客户端IP,所以我需要访问请求对象,但无法得到它。
答案 0 :(得分:0)
无法回答HttpServletRequest,
但如果你的想法是将客户端远程IP传输到Java端......你可能需要采取另一条路径。 AFAIK PHPJavaBridge只知道客户端的IP地址(PHP脚本调用Java.inc - 通常是localhost),而不是远程用户IP。因此,即使你修复了HttpServletRequest,你也不会真正拥有你所期望的。我当然可能错了......
如果必须这样做,我会使用:
使用方法
发送远程客户端ip.orElseGet(Employee::createDummy);
或者在java会话中设置
<?php
$javaObject = new java('...');
$javaObject->log('username', $_SERVER['REMOTE_ADDR']);
我不再使用Java.inc了,所以我不确定会话的语法,但如果您正在寻找信息,请查看{{3} }和soluble-japha session usage。它可能对你有所帮助,语法不同,但非常兼容。