- Subscribe to RSS Feed
- Mark as New
- Mark as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
I am going to go out on a limb here and say 99 percent of all the people on this forum will not read this blog. I am going to protect my pride by admitting that this error is very specific, and for the most part a lot of us will probably never see it. LUCKY ME - I saw it. I am going to try and put this as simple as I can (that sentence is my way of getting you ready for a long-winded answer to a more complex issue). At the end of this blog if anyone has any questions, please feel free to comment or email. I would be happy to save you a few hours of troubleshooting time.
I have only encountered the 415 error while trying to consume a .NET web service using WCF via a MID-Server. I am sure it can come up while consuming other web service types as well.
This problem occurs because within the SOAP Request Header there is a key called "Content-Type" and the value pair we are sending differs from that specified on the web server. I know what you are thinking. ISN'T that suppose to be specified in the WSDL contract then?
The short answer to that question is, yes and yes it is.
If you were to import the same WSDL into SOAPUI you would see that it recognizes the WHTTPSBinding in the WSDL and uses the Content-Type: application/soap+xml.
but...
If you were to consume the same web service, using the same WSDL you just imported into SOAPUI, within SNC (going through a MID-Server I haven't tried it without the MID-Server yet) you will notice that we use the Content-Type: text/xml.
When the receiving web service gets this request it checks to make sure Content-Type are the same. If they are not, well you get the 415 error. I know it sucks and if you are dealing with this I hope you have access to your web server and can change the code, or you can hack the SOAP Request Header on your instance. Either solution isn't pretty.
As IBM stated on one of their blogs, "When a SOAP client sends a SOAP message to a SOAP server it uses HTTP protocol for transportation. This is called SOAP Binding with HTTP."
Luckily enough for me the customer I was working with was also the web programmer and wrote the server code offering this service.
Wheew! Now for what you have been waiting for. HOW did we fix it?
Well in the web.config for the server the binding for the endpoint was set to this: wsHttpBinding and it needed to be changed to basicHttpBinding.
What a mess I know. The moral of the story is stick with basicHttpBinding when you are writing your own web service that you want to consume from SNC through a MID-Server. Maybe this is an issue we can start fixing on our end as well. Of course the ideal functionality would be to recognize the binding type in the WSDL provided and change the Request Header to the correct Content-Type. Cheers and happy coding.
- 4,513 Views
- « Previous
-
- 1
- 2
- Next »
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.