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.
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:
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?