Я пытаюсь создать сервис, который должна, надо надеяться, использовать третья сторона.
Потребитель совместим с SOAP 1.1, который является, почему я использую basicHttpBinding для сервера. Когда фактический запрос выполнен, что-то, кажется, идет не так, как надо с типами контента, ожидаемыми сервером. Используя basicHttpBinding я не добираюсь, почему сервер все еще ожидает 'application/soap+xml', который, к моему знанию, только требуется SOAP 1.2.
Я использовал wireshark для выяснения точно, о чем связывались те два. См. tcp поток и установку ниже.
Любая справка ценится.
Запрос приложения сторонних производителей
ОТПРАВЬТЕ / HTTP/1.1
SOAPAction: http://tempuri.org/ITestService/Hello
Тип контента: text/xml; charset=utf-8
Хост: shdesktop:8000
Довольная длина: 297
Ожидайте: 100 - продолжаются
Соединение:Закрыть
Ответ Сервера WCF
HTTP/1.1 415 не Может обработать сообщение потому что тип контента 'text/xml; charset=utf-8' не был ожидаемый тип 'application/soap+xml; charset=utf-8'.
Довольная длина: 0
Сервер: Microsoft-HTTPAPI/2.0
Дата: вторник, 09 февраля 2010 14:03:19 GMT
Соединение:закрыть
Сервисная конфигурация
Это длинный указатель на постоянную широкую последовательность (т.е. последовательность из широких символов).
Так как это широкий ряд, вы хотите, чтобы ваша постоянная выглядит как: L «StartWindow»
. Я бы тоже не стал создавать промежуточный a
, я бы просто передал L «StartWindow»
для параметра:
ghTest = FindWindowEx(NULL, NULL, NULL, L"TestWindow");
Если вы хотите быть педантично правильным, «LPCTSTR» является «текстовой» последовательностью - широкой последовательностью в построении Юникода и узкой последовательностью в построении ANSI, поэтому вы должны использовать соответствующий макрос:
ghTest = FindWindow(NULL, NULL, NULL, _T("TestWindow"));
Однако мало кто заботится о создании кода, который можно скомпилировать как для наборов символов Юникода, так и для наборов символов ANSI, и если вы не добьетесь того, чтобы он действительно работал правильно, это может быть немного дополнительной работой для небольшой выгоды. В этом конкретном случае не так много дополнительной работы, но если вы манипулируете последовательностями, есть полный набор макросов манипуляции последовательностями, которые разрешаются в правильные функции.
-121--848988-Для обработки анализа большого файла можно использовать pulldom API , не загружая его в память одновременно. Это обеспечивает более удобный интерфейс, чем использование SAX с незначительной потерей производительности.
Он в основном позволяет передавать XML-файл до тех пор, пока вы не найдете интересующий вас бит, а затем начать использовать регулярные операции DOM после этого.
from xml.dom import pulldom
# http://mail.python.org/pipermail/xml-sig/2005-March/011022.html
def getInnerText(oNode):
rc = ""
nodelist = oNode.childNodes
for node in nodelist:
if node.nodeType == node.TEXT_NODE:
rc = rc + node.data
elif node.nodeType==node.ELEMENT_NODE:
rc = rc + getInnerText(node) # recursive !!!
elif node.nodeType==node.CDATA_SECTION_NODE:
rc = rc + node.data
else:
# node.nodeType: PROCESSING_INSTRUCTION_NODE, COMMENT_NODE, DOCUMENT_NODE, NOTATION_NODE and so on
pass
return rc
# xml_file is either a filename or a file
stream = pulldom.parse(xml_file)
for event, node in stream:
if event == "START_ELEMENT" and node.nodeName == "AssetType":
if node.getAttribute("longname") == "characters":
stream.expandNode(node) # node now contains a mini-dom tree
type_nodes = node.getElementsByTagName('type')
for type_node in type_nodes:
# type_text will have the value of what's inside the type text
type_text = getInnerText(type_node)
-121--4667595- В basicStartBinding
используется 1,1 SOAP - но в этом случае у вас будет тип содержимого application/soap + xml
.
Поскольку ваш клиент отправляет text/xml
- есть ли вероятность, что он ожидает интерфейс REST? Это может быть обработано WCF webStartBinding
.
Подробнее об ОТДЫХЕ в WCF читайте в MSDN WCF REST Developer Center и ознакомьтесь с серией экранов Pluralsight на WCF REST - настоятельно рекомендуется!
Я занимаюсь этим (довольно часто) для своей работы уже некоторое время. Существует много подводных камней с HTML-письмами. Разные клиенты электронной почты отображают HTML по-разному и делают IE6 продвинутыми.
Вот лето того, что я узнал до сих пор.
Это далеко не полный список, но должен поставить большинство людей на правильный трек.
-121--836572-Хотя мне понравились многие аспекты дизайна среды выполнения Erlang и платформы OTP, я обнаружил, что это довольно раздражающий язык программы для разработки в. Запятые и точки полностью хромают и часто требуют перезаписи последнего символа многих строк кода только для изменения одной строки. Кроме того, некоторые операции, простые в Ruby или Clojure, утомительны в Erlang, например обработка последовательностей.
Для распределенных систем, полагающихся на общую базу данных, система Mnesia является действительно мощным и, вероятно, хорошим вариантом, но я программирую на языке, чтобы учиться и развлекаться, и раздражающий фактор Эрланга начал перевешивать фактор веселья, как только я прошел через основные учебные пособия по банковскому счету и начал писать плагины для сервера XMPP.
-121--865216-Обычно при получении сообщения/ошибки в веб-службе, содержащей текст:
content type 'text/xml'
Это означает, что веб-сервер вернул страницу ошибки вместо ожидаемого ответа xml.