Я реализовал SoapClient в PHP, и мне нужно отладить вызовы, сделанные на сервер Soap. Я хотел бы перехватить HTTP-вызовы, когда я запускаю свой код PHP для получения содержимого тела.
Это возможно? Как мне этого добиться? Я под Linux.
Расширить 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()
в коде выше.
Других решений пока нет …