Reputation: 1421
I'm writing a Windows Form app that uses an API (the smartFOCUS API, to be precise) to write simple reports and write them to a file.
I've done this about a hundred times using another simple Windows Form app I wrote, and the calls works fine, but when I try it with the app I'm working on, it returns this exception on the call:
System.InvalidOperationException was unhandled.
Message = Client found response content type of 'text/html', but expected 'text/xml'
Any idea on what could be causing this exception? It's really confusing me.
If you'd like any more code or exception details or anything let me know.
Here's the code that calls the method:
soap.GetEvents2(logOn.Username,
logOn.Password,
logOn.BoothKey,
flag,
ref eventFields,
this.EventCode,
accountKey,
emailKey,
packageKey,
replyMapKey,
this.BatchKey,
this.StartDate,
this.EndDate,
maxRows,
ref results);
Thanks in advance!
EDIT:
Here's the reponse HTML:
The request failed with the error message:
--
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<title>500 - Internal server error.</title>
<style type="text/css">
<!--
body{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-serif;background:#EEEEEE;}
fieldset{padding:0 15px 10px 15px;}
h1{font-size:2.4em;margin:0;color:#FFF;}
h2{font-size:1.7em;margin:0;color:#CC0000;}
h3{font-size:1.2em;margin:10px 0 0 0;color:#000000;}
#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS", Verdana, sans-serif;color:#FFF;
background-color:#555555;}
#content{margin:0 0 0 2%;position:relative;}
.content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;}
-->
</style>
</head>
<body>
<div id="header"><h1>Server Error</h1></div>
<div id="content">
<div class="content-container"><fieldset>
<h2>500 - Internal server error.</h2>
<h3>There is a problem with the resource you are looking for, and it cannot be displayed.</h3>
</fieldset></div>
</div>
</body>
</html>
Sorry for the messiness of that.
Upvotes: 0
Views: 2256
Reputation: 42480
Your web server is returning the SOAP response with the Content-Type header set to text/html, while the library requires content type text/xml. So you need to change the configuration of your web server to serve the page as XML.
If the server is using ASP.NET, then a common cause of this would be because the web service encountered an error. The error details are written as an HTML formatted page to the client, rather than a SOAP XML response. If you can examine the raw output from the web service then you should be able to see an error message that will lead you to a solution.
EDIT
From the HTML you provided, this does indeed look like a generic error page. It looks the server is configured to hide the error details. In ASP.NET you can enable this by adding the following to the web service's web.config:
<configuration>
<system.web>
<customErrors mode="Off">
</system.web>
</configuration>
If you don't control the web service then you might have to get help from the API provider - perhaps one of your input parameters is bad?
Upvotes: 1
Reputation: 82345
Without knowing much about the smartFOCUS api you are using...
It appears that whatever endpoint you are hitting is responding with the wrong content type. As indicated by the exception the call is expecting a result with a content type of text/xml
but is getting text/html
(might be a valid soap message but the content type isn't set to xml explicitly).
I would recommend spinning up soapUI or some other form of debugging/interacting with the service endpoint directly and seeing if the responses are valid, if you don't control the endpoint that is sending the inappropriate content type for the response you may want to contact whoever is in control and see if they can remedy the issue.
EDIT - Response to additional info in OP question.
Given the response posted it appears that the call is invalid, this could be due to a number of reasons; Incorrect parameters being passed and not handled correctly on the server, a completely invalid endpoint being referenced or genuine server problems out of your scope. If you are passing correct parameters to the correct endpoint then I would definitely suggest contacting the owner of the endpoint to get the situation resolved.. if you aren't sure I would also recommend again to try and debug the calls via soapUI or some other endpoint interaction tool.
Upvotes: 0
Reputation: 15569
Well, the problem is happening on the server side. Is there any kind of error logging available for the smartFocus API? Is this a cloud service or is this a service that you host someplace?
Upvotes: 0
Reputation: 17274
Can you look into response? Receiving html
instead of xml
is usually a sign thay you did web-request to incorrect URL and received 404
error or something similar.
Upvotes: 0