I would suggest you split this out into two tracks, unit testing and end-to-end (integration testing. It depends on what your goal is here.
The question is, how can I mock the services B and C in order to test A (that includes checking if the requests to B and C are correct)?
It makes little sense to want to use a real URL in order to receive a fake response.
If the goal is to assert that the content of the requests is correct, then you can observe this by having your local service use a mocked http client, one which does not actually make a call to the external service, but merely records how it's being used (and potentially returns a mocked result).
If the goal is to assert that the web request itself is correct, in terms of having the correct URL and formatting the request correctly; that is something I would figure out using end-to-end tests with real services and specific scenarios that highlight the high level behavior I'm expecting from my application/ecosystem.
Keep in mind that at this stage, your unit tests will have already weeded out any issues with the content of the request, so now you can focus solely on the structure of the request.
If your response to this is "but I call the URL directly, I don't wrap my logic in an abstracted HTTP client", the short answer is that this use case is one of the major reasons why you want to abstract your IO access, so that it can be mocked when running tests.