Вызов метода API C #, вызывающий исключение - PullRequest
0 голосов
/ 07 марта 2011

Я пишу приложение Windows Form, которое использует API (точнее, API smartFOCUS) для написания простых отчетов и записи их в файл.

Я делал это около ста разиспользуя другое простое приложение Windows Form, которое я написал, и вызовы работают нормально, но когда я пробую его с приложением, над которым я работаю, он возвращает это исключение при вызове:

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 ]

1 голос
/ 07 марта 2011

Ваш веб-сервер возвращает ответ SOAP с заголовком Content-Type, установленным в text / html, в то время как библиотеке требуется тип содержимого text / xml. Поэтому вам нужно изменить конфигурацию вашего веб-сервера, чтобы страница служила в виде XML.

Если сервер использует ASP.NET, общей причиной этого может быть то, что веб-служба обнаружила ошибку. Подробная информация об ошибке записывается клиенту как страница в формате HTML, а не как ответ SOAP XML. Если вы сможете просмотреть исходные данные веб-службы, вы сможете увидеть сообщение об ошибке, которое приведет вас к решению.

EDIT

Из предоставленного вами HTML-кода это действительно выглядит как общая страница с ошибкой. Похоже, сервер настроен на скрытие подробностей об ошибке. В ASP.NET вы можете включить это, добавив в web.config веб-службы следующее:

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

Если вы не контролируете веб-службу, возможно, вам придется обратиться за помощью к провайдеру API - возможно, один из ваших входных параметров неверен?

0 голосов
/ 07 марта 2011

Ну, проблема происходит на стороне сервера. Есть ли какой-либо вид регистрации ошибок для API SmartFocus? Это облачный сервис или это сервис, который вы где-то размещаете?

0 голосов
/ 07 марта 2011

Не зная о API SmartFOCUS, который вы используете ...

Похоже, что любая конечная точка, на которую вы обращаетесь, отвечает с неправильным типом контента. Как указано в исключении, вызов ожидает результат с типом содержимого text/xml, но получает text/html (может быть допустимым мыльным сообщением, но тип содержимого явно не установлен в xml).

Я бы порекомендовал ускорить soapUI или какую-либо другую форму отладки / взаимодействия с конечной точкой службы напрямую и посмотреть, действительны ли ответы, если вы не контролируете конечную точку, отправляющую неприемлемый контент введите ответ, с которым вы можете связаться, кто бы ни контролировал, и посмотреть, смогут ли они решить проблему.

РЕДАКТИРОВАТЬ - Ответ на дополнительную информацию в вопросе OP.

Учитывая опубликованный ответ, кажется, что вызов недействителен, это может быть связано с рядом причин; Неправильные параметры передаются и не обрабатываются правильно на сервере, указывается совершенно недопустимая конечная точка или возникают проблемы с подлинным сервером вне вашей области. Если вы передаете правильные параметры в правильную конечную точку, то я определенно рекомендую связаться с владельцем конечной точки, чтобы разрешить ситуацию. Если вы не уверены, я бы также рекомендовал снова попытаться отладить вызовы через soapUI или какой-либо другой инструмент взаимодействия с конечной точкой.

0 голосов
/ 07 марта 2011

Можете посмотреть ответ?Получение html вместо xml обычно является признаком того, что вы сделали веб-запрос на неверный URL и получили 404 ошибку или что-то подобное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...