Я работаю в среде php и хочу получить объект Java HTTP Request. это будет из внешнего источника на сайт хоста.
объект будет в следующем формате:
POST /fail?installation=XXXXXX&msgType=authResult HTTP/1.0
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
Host: www.worldpay.com
Content-Length: 973
User-Agent: WJHRO/1.0 (worldPay Java HTTP Request Object)
region=new+format+region&authAmountString=%26%23163%3B10.00&_SP.charEnc=UTF8&desc=&tel=&address1=new+format+address1)
я понимаю из Java, что я могу получить доступ к объекту запроса Java, как это;
protected void doGet(
HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
String param1 = request.getParameter("param1");
String param2 = request.getParameter("param2");
}
для меня проблема в том, что я работаю в php и мне нужно преобразовать строковые параметры в формат PHP / $ varables.
я не могу найти какой-либо онлайн-материал, который мог бы помочь мне в этом, и был бы очень признателен за советы о том, как конвертировать его
Это стандартный запрос HTTP POST. «WorldPay Java HTTP Request Object» означает только то, что он отправляется службой на основе Java. Так что вы не увидите ничего связанного с Java в вашем PHP-приложении. Используйте стандартные функции PHP для доступа к данным запроса. Для запросов POST это $_POST
массив.
Поскольку вы используете протокол HTTP, вам все равно, на каком клиенте и сервере написаны. Если вы используете PHP для бэкэнда, вам просто нужно изучить, что PHP использует для переноса входящего HTTP-запроса (это не имеет никакого отношения к вашей Java) ,
PHP извлекает данные POST в $_POST
суперглобальная переменная и строка запроса в $_GET
:
$msgType = $_GET['authResult'];
$installation = $_GET['installation'];
Из вашего дампа видно, что вся эта магия Java просто объединяется, URL кодируется и помещает данные в тело POST:
$contents = file_get_contents('php://input'); // read request contents
$data = explode('&', $contents);
foreach($data as &$entry) {
$entry = explode('=', $entry);
$entry[1] = urldecode($entry[1]);
}
unset($entry);
Это должно привести к следующей структуре:
$data = [
['region', 'new format region'],
...
];
Вы можете изменить формат вывода на любой, который вы предпочитаете.