C#API方法调用抛出异常

时间:2011-03-07 15:25:12

标签: c# html xml api methods

我正在编写一个Windows窗体应用程序,它使用API​​(准确地说是smartFOCUS API)来编写简单的报告并将它们写入文件。

我使用我编写的另一个简单的Windows窗体应用程序完成了大约一百次,并且调用工作正常,但是当我尝试使用我正在处理的应用程序时,它会在调用时返回此异常:< / p>

System.InvalidOperationException was unhandled.
Message = Client found response content type of 'text/html', but expected 'text/xml'

有什么可能导致此异常的想法?这让我很困惑。

如果您想了解更多代码或异常详情或任何其他内容,请与我们联系。

以下是调用该方法的代码:

        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);

提前致谢!

修改

以下是响应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>

对不起它的混乱。

4 个答案:

答案 0 :(得分:1)

您的Web服务器返回SOAP响应,其Content-Type标头设置为text / html,而库需要内容类型text / xml。因此,您需要更改Web服务器的配置以将该页面作为XML提供。

如果服务器使用的是ASP.NET,则导致此问题的常见原因是Web服务遇到错误。错误详细信息将作为HTML格式的页面写入客户端,而不是SOAP XML响应。如果您可以检查Web服务的原始输出,那么您应该能够看到一条错误消息,该消息将引导您找到解决方案。

修改

从您提供的HTML中,这确实看起来像一般错误页面。它看起来服务器配置为隐藏错误详细信息。在ASP.NET中,您可以通过将以下内容添加到Web服务的web.config中来启用此功能:

<configuration>
  <system.web>
      <customErrors mode="Off">
  </system.web>
</configuration>

如果您不控制Web服务,那么您可能需要从API提供程序获得帮助 - 可能您的一个输入参数不好?

答案 1 :(得分:0)

你能看一下回应吗?接收html代替xml通常表示您对网址提出错误,并收到404错误或类似内容。

答案 2 :(得分:0)

你不太了解你正在使用的smartFOCUS api ......

看来您正在点击的任何端点都是使用错误的内容类型进行响应。如异常所示,调用期望结果的内容类型为text/xml但正在获得text/html(可能是有效的soap消息,但内容类型未明确设置为xml)。 / p>

我建议直接调用soapUI或其他形式的调试/与服务端点交互,看看响应是否有效,如果你不控制发送不适当内容类型的端点你可能想要联系的人,你可以联系谁,看看他们是否可以解决这个问题。

编辑 - 对OP问题中的其他信息的回复。

鉴于发布的回复,看来呼叫无效,这可能是由于多种原因造成的;在服务器上传递和未正确处理的参数不正确,引用完全无效的端点或范围外的正版服务器问题。如果您将正确的参数传递给正确的端点,那么我肯定建议联系端点的所有者以解决问题..如果您不确定我是否也会再次建议尝试通过{{3}调试呼叫或其他一些端点交互工具。

答案 3 :(得分:0)

嗯,问题发生在服务器端。是否有任何类型的错误日志记录可用于smartFocus API?这是云服务还是您在某个地方托管的服务?