简体   繁体   中英

Can the SoapAction of a SOAP REQUEST be altered by interoperability issues between .NET and JAVA or a network/infraestructure proxy

I have a scenario where a .NET 3.5 WebClient is performing a SOAP request and the SoapAction that is being sent in the the header is this

<Host>:<Port>/NotOps/RFMP/portTypeEndPoint?SessionID=<token>

But on the receiving side of the SOAP REQUEST , which is JAVA, there is a "/" being received before the "?" character

<Host>:<Port>/NotOps/RFMP/portTypeEndPoint/?SessionID=<token>

Is it posible for a network proxy to alter any part of soap request ? (by network proxy I mean the proxy that is used inside a bussiness to access the Web an other networks )

Are there still interoperability issue betweeen a .Net 3.5 client that consumes a Java service like the ones mentioned here

.NET requires that the HTTP SOAPAction header be used to exactly identify the operation on which service is being invoked. .NET requires the format of the SOAPAction header to be the service namespace, followed by a forward slash, followed by the name of the operation, or urn:Example/sayHello. Notice, though, that SOAP::Lite's default is to use a pound sign (#) to separate the service namespace from the name of the operation. This wasn't an issue when we were invoking Java services with SOAP::Lite because Apache SOAP simply ignores the SOAPAction header altogether.

This is mentioned http://oreilly.com/catalog/progwebsoap/chapter/ch03.html Example 3-19

Any Ideas of other things than can be causing this behaviour ?

In this case the error, that mentioned the additional forward slash, was misleading since the error was the result of lack of permission on the endpoint of the communication

As you said, this behaviour could be caused by proxy with some rewrite, but it would be very strange.

Try following test:

  1. From .NET code call some mock (ideally on the same machine as is your program) and check the SoapAction.

  2. Call your java code from SoapUI with exactly the same request as you got from step 1. (again ideally from the same machine)

If it still adds / before ? it meant that the technology you are using is altering this for you (my guess would be java application server).

If / won't appear then you have to investigate your network and find the magical proxy.

Beside the answer provided by jakub.petr

The error, that mentioned the extra forward slash, was the result of lack of permission on the endpoint of the communication

Keep in mind that even detailed errors can mislead you to try to fix things that are not broken

So

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM