2017-02-07 1 views
0

Я пытаюсь настроить PHP Java Bridge, и я могу вызвать Java-метод из PHP, но я не могу получить объект запроса (HttpServletRequest) в своем классе java. Как я могу это получить?Как получить объект HttpServletRequest в PHP Java Bridge?

Мой 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, как показано ниже: -

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

Eh? «HttpServletRequest» поставляется непосредственно на ваш сервлет. – EJP

+0

Может быть, это очень плохие вопросы, чтобы спросить здесь, но каждый раз я получаю объект нулевого запроса. Если я запустил приложение в качестве веб-приложения, я получаю объект запроса, но когда запрос инициируется PHP с использованием PHP Java-моста, это время равно null. – dpilwal

+0

Рассматривая источник кода как для клиента, так и для сервера, я не могу понять, где client_ip зарегистрирован и может использоваться из сервлета. (По IP-адресу клиента я имею в виду полезный: $ _SERVER ['REMOTE_ADDR']) Я полагаю, что вы отправили значение в свой метод 'sayHello (client_ip)' или используете java_session(). Если вам интересно, взгляните на [эту попытку] (https://github.com/belgattitude/soluble-japha/blob/master/test/src/SolubleTest/Japha/Bridge/Driver/DriverContextTest.php#L105) Я попробовал это. –

ответ

0

Не могу ответить на HTTPServletRequest,

, но если ваша идея заключается в том, чтобы передать клиента удаленный IP на стороне Java ... Вы, возможно, придется взять другой путь. AFAIK PHPJavaBridge будет знать только IP-адрес клиента (php-скрипт, вызывающий Java.inc - обычно localhost), а не IP-адрес удаленного пользователя. Поэтому, даже если вы исправите HttpServletRequest, у вас действительно не будет того, что вы ожидаете. Я мог бы быть неправильно, конечно ...

Если бы я должен был сделать это, я бы использовать:

Отправить удаленный IP клиента в методе

<?php 
$javaObject = new java('...'); 
$javaObject->log('username', $_SERVER['REMOTE_ADDR']); 

Или установить его в Java сессия

<?php 
java_session('remote_ip', $_SERVER['REMOTE_ADDR']); 

Я не используя Java.inc больше, так что я не совсем уверен, что синтаксис для сеансов, но если вы ищете Infos, посмотрите на soluble-japha session usage и context. Это может помочь вам, синтаксис отличается, но в значительной степени совместим.

Смежные вопросы