phpro / soap-client

A general purpose SOAP client for PHP
MIT License
862 stars 175 forks source link

Providing a path to file for wizard gives invalid scheme error #510

Closed NerijusNoreika closed 7 months ago

NerijusNoreika commented 7 months ago

Bug Report

I am following the wizard instructions as gif file shows in the github docs. I provide the path to wsdl, but get an error.

Current behavior

Provide path config/wsdl.wsdl in the wizard step: Wsdl location (URL or path to file):, get the following error: Invalid URL: scheme is missing in "config/wsdl.wsdl". Did you forget to add "http(s)://"?

Expected behavior

No error should be generated, since I am not using URL for location, but file path.

veewee commented 7 months ago

Hello @NerijusNoreika,

By default, the generator uses an HTTP based WSDL loader. You can swap it out with e.g. a stream wrapper loader that can work with local files.

return Config::create()
    ->setEngine(CodeGeneratorEngineFactory::create(
        'wsdl.xml',
        new FlatteningLoader(new StreamWrapperLoader())
    ))

When you applied this change, you'll need to trigger the various generate commands on the soap-client binary manually in order to generate everything.

NerijusNoreika commented 7 months ago

Thanks for quickly reply, appreciate it. :)

I used a server for wsdl to generate the types and I see that ExtSoapOptions::defaults that is used on factory to create the client accepts the file path. Got my SOAP request working.

Though I guess updating the docs to include the information that the wizard does not work with file paths out of the box, would be appreciated, especially so since the wizard gif uses a path.

veewee commented 7 months ago

Thanks for the comment.

I'm thinking : maybe using the resource stream loader could be a better default. Cause, when you need specific additional HTTP settings, you need to alter the configuration anyways.

Let me keep this one open for a while so that I can look at the impact of that change.