【问题标题】:C# API method call throwing an exceptionC# API 方法调用引发异常
【发布时间】:2011-03-10 07:01:47
【问题描述】:

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

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

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>

抱歉给你带来了麻烦。

【问题讨论】:

  • 嗯 - 听起来服务器正在崩溃并返回通用 HTML 页面而不是 SOAP/XML 文档。有什么方法可以检查异常/客户端以查看它是否包含任何响应 HTML?
  • @RQDQ 是的,异常返回一些描述的 HTML。我会在这个问题上发布它。

标签: c# html xml api methods


【解决方案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 提供者那里获得帮助 - 也许您的输入参数之一是错误的?

【讨论】:

  • 对不起,我不完全理解你的回答。客户是指谁?
  • 您的客户是调用 Web 服务的任何东西 - 所以在您的情况下,是营销公司提供的库 API 库。
【解决方案2】:

你能看看回复吗?收到 html 而不是 xml 通常表明您对错误的 URL 进行了网络请求并收到了 404 错误或类似的东西。

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 这不是我的服务,不。这是一家营销公司的 API。我用它来建立我自己的报告。
    • 在这种情况下,您可能会陷入猜测您的参数/配置有什么问题,或者联系公司并与他们的支持人员一起确定发生了什么。
    【解决方案4】:

    不了解您正在使用的 smartFOCUS api...

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

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

    EDIT - 对 OP 问题中的附加信息的回应。

    鉴于已发布的响应,呼叫似乎无效,这可能是由于多种原因;传递了错误的参数并且在服务器上未正确处理,引用了完全无效的端点或真正的服务器问题超出了您的范围。如果您将正确的参数传递给正确的端点,那么我肯定会建议联系端点的所有者以解决问题。如果您不确定,我还建议再次尝试通过 soapUI 或调试调用其他一些端点交互工具。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-07
      • 2021-12-12
      • 1970-01-01
      • 2017-06-09
      • 2019-12-10
      • 2019-08-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多