Как я могу перехватить HTTP-запрос клиента PHP Soap?

Я реализовал SoapClient в PHP, и мне нужно отладить вызовы, сделанные на сервер Soap. Я хотел бы перехватить HTTP-вызовы, когда я запускаю свой код PHP для получения содержимого тела.

Это возможно? Как мне этого добиться? Я под Linux.

1

Решение

Расширить SoapClient класс и переопределить метод __doRequest(). Это где HTTP-запрос отправляется на сервер. Если вы довольны реализацией по умолчанию, все, что вам нужно сделать, это записать значения, которые она получает в качестве аргументов, вызвать родительскую реализацию, записать значение, которое она возвращает, а также вернуть его. Используйте новый класс вместо SoapClient всякий раз, когда вам нужно зарегистрировать связь между клиентом и сервером SOAP.

Что-то вроде этого:

class MySoapClient extends SoapClient
{
public string __doRequest($request, $location, $action, $version, $one_way = 0)
{
// Log the request here
echo('$action='.$action."\n");
echo('$request=[[['.$request."]]]\n");

// Let the parent class do the job
$response = parent::__doRequest($request, $location, $action, $version, $one_way);

// Log the response received from the server
echo('$response=[[['.$response."]]]\n");

// Return the response to be parsed
return $response;
}
}

Используйте метод журнала по вашему выбору вместо echo() в коде выше.

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]