Open victorgp89 opened 5 years ago
is the file mentioned by the error accessible?
And when I wrap the xml with some headers like this:
How should I create the corresponding object in the headers?
Many thanks, Victor
is the file mentioned by the error accessible?
Can it be that the PHP client is not allowed to access the file for same reason? from what I know it is the only reason for that error
How should I create the corresponding object in the headers?
you should use GoetasWebservices\SoapServices\SoapClient\Arguments\Headers\Header
, see https://github.com/goetas-webservices/soap-client/blob/746570af24e24ffa363264f8676a55763c044bf6/tests/Client/Client12RequestResponsesTest.php#L173 for an example
Sorry for the response, I will not bother you anymore.
We have this in metadata and SoapContainer.
We need to execute the following request:
Following your example we create the corresponding object:
$client->getRooms($rq, new \GoetasWebservices\SoapServices\SoapClient\Arguments\Headers\Header($userValidation));
$rq is an instanceof of the RequestRooms php class.
And when call this process we have following error in ArgumentReader:
PHP Notice: Undefined index: requestRoomsHeader in /var/www/igm_client/vendor/igm/synergyclient/src/Arguments/ArgumentsReader.php on line 66 PHP Fatal error: Call to a member function setValue() on null in /var/www/igm_client/vendor/igm/synergyclient/src/Arguments/ArgumentsReader.php on line 67
It would be very helpful if you could give us some reason for the error.
Many thanks
I guess you have forgot to register the Header handler as in https://github.com/goetas-webservices/soap-client/blob/746570af24e24ffa363264f8676a55763c044bf6/tests/Client/Client12RequestResponsesTest.php#L67
if you are suing SoapContainerBuilder::createSerializerBuilderFromContainer
You can do it via:
$serializer = SoapContainerBuilder::createSerializerBuilderFromContainer($container, function($registry) {
$registry->registerSubscribingHandler(new HeaderHandler());
})->build();
No,
I think the problem is in ArgumentsReader when the serviceDefinition have many parts.
In method handleHeaders you set in envelope the instance of the headers and return the body.
So now we have this content:
In variable args:
And in input['parts']:
So, always throw at this point in code:
Hmm... may be a bug, but not sure about it.
Can you copy/paste your soap operaton for this call? im confused by the "requestRoomsHeader" in the "parts" array.
Is the header defined also at SOAP metadata level or not? does it look as something as https://github.com/goetas-webservices/soap-client/blob/746570af24e24ffa363264f8676a55763c044bf6/tests/Fixtures/test.wsdl#L511 ?
Here is the wsdl if you want to check but is allright I think:
It looks a bug. I did not find anything that tests that case in my test suite.
Can you try to without wrapping the header param in \GoetasWebservices\SoapServices\SoapClient\Arguments\Headers\Header
?:
$client->getRooms($rq, $userValidation);
If I pass GetRoomsInput directly like:
I've another error: PHP Fatal error: Call to a member function value() on string in /var/www/igm_client/vendor/jms/serializer/src/JMS/Serializer/Metadata/PropertyMetadata.php on line 105
And also call the function with your parameters like this:
but you are still using \GoetasWebservices\SoapServices\SoapClient\Arguments\Headers\Header
. Can you try without?
like $client->getRooms($rq, $hotel)
.
Yes, if you pass like this:
$client->getRooms($rq, $userValidation);
I've this error:
PHP Notice: Undefined index: requestRoomsHeader in /var/www/igm_client/vendor/igm/synergyclient/src/Arguments/ArgumentsReader.php on line 71 PHP Fatal error: Call to a member function setValue() on null in /var/www/igm_client/vendor/igm/synergyclient/src/Arguments/ArgumentsReader.php on line 72
:/
But I don't understand if I create request and set the body and header manually like:
When I serialize to convert in XML it return followin error:
PHP Fatal error: Call to a member function value() on integer in /var/www/igm_client/vendor/jms/serializer/src/JMS/Serializer/Metadata/PropertyMetadata.php on line 104
And in getRoomsInput I have this:
And I've another error:
If the problem if this header:
Can I do this?
MyHandler is with o without namespace?
I want to do this to avoid the following:
@riccardonar did you face an issue as this?
Because this class: type: 'GoetasWebservices\SoapServices\SoapEnvelope\Headers<''Igm\Synergy\Definitions\Hotusa\Login\UserValidation''>'
Doesn't exist. It's posible to fix this? I do anything wrong? How it works?
Many thanks for attention.
Should be GoetasWebservices\SoapServices\SoapEnvelope2\Headers
.... @riccardonar ?
did you face an issue as this?
Mmm, i check that in my SOAPs i haven't any header part in the operations, so i don't test it
Where you construct this part of metadatas?
`'GoetasWebservices\SoapServices\SoapEnvelope\Headers<''Igm\Synergy\Definitions\Hotusa\Login\UserValidation''>'
Because If i extrat the part the namespace of the class in there that's work correctly.
`
Because when you pass Header like you tell me:
$client->getRooms($rq, $userValidation);
In Arguments reader you set empty class HeaderPlaceHolder to envelope and it throws an error cause argument is not the correct instance.
Is that for something?
We can do this but I'm not sure that if it's how you thought.
Hi, A question, When a wsdl has importacions like:
<xsd:import namespace="http://ws.link.hotelresb2b.com/login" schemaLocation="Link?xsd=login.xsd"/>
When I execute the command:
vendor/bin/soap-client -vvv generate config/config_hotusa.yml src/Service/Container --dest-class=Igm/Synergy/Service/Container/SoapContainerHotusa
I've an error in the SchemaReader.php
In all the metadata that I have generated with WSDL without imports, I haven't had any problems.
Thanks for advance, Victor