2012-05-11 3 views
3

У меня есть ответ MTOM на диске, и я пытаюсь загрузить и проанализировать ответ. При создании считывателя MTOM я все время получаю ошибку.MTOM - Недопустимый заголовок заголовка MIME, встречающийся при чтении в VS 2010

Invalid MIME content-type header encountered on read. 

Является ли это ошибкой или заголовок для типа содержимого действительно означает, что Visual Studio не может понять тип содержимого?

MIME-Version: 1.0 
Content-Type: Multipart/Related;boundary=DeltaSync91ABCB4AF5D24B8F988B77ED7A19733D?MTOM; 
    type="application/xop+xml"; 
    start="<[email protected]>"; 

    --DeltaSync91ABCB4AF5D24B8F988B77ED7A19733D?MTOM 
    content-transfer-encoding: binary 
    content-type: application/xop+xml; charset=utf-8; type="application/xop+xml" 
    content-id: <[email protected]> 

    <ItemOperations xmlns:xop="http://www.w3.org/2004/08/xop/include" xmlns:B="HMMAIL:" xmlns:D="HMSYNC:" xmlns="ItemOperations:"><Status>1</Status><Responses><Fetch><ServerId>E631966A-9439-11E1-8E7B-00215AD9A7B8</ServerId><Status>1</Status><Message><xop:Include href="cid:[email protected]" /></Message></Fetch></Responses></ItemOperations> 
    --DeltaSync91ABCB4AF5D24B8F988B77ED7A19733D?MTOM 
    content-transfer-encoding: binary 
    content-type: application/octet-stream 
    content-id: <[email protected]> 

Вот простой код для создания считывателя MTOM.

XmlDictionaryReader mtomReader = XmlDictionaryReader.CreateMtomReader 
      (
      fStream, 
      Encoding.UTF8, 
      XmlDictionaryReaderQuotas.Max 
      ); 
+0

It _shouldn't_ сделать разницу, но вы можете сделать 'MultiPart/Related' более строчным« multipart/related »? Так я всегда видел это в рабочих транзакциях. Имя «Content-Type» определяется как нечувствительное к регистру, но я уверен в значении. –

+0

Или ваша первая часть имеет 'transfer-encoding: binary', но' content-type', которая поддается текстовой кодировке, а не двоичной кодировке? Это может не понравиться комбинация 'binary' с' charset = utf-8'. –

ответ

1

Есть несколько проблем в ваших данных:

  • Вы должны кодировать граничную строку в вашем заголовке Content-Type, поскольку он содержит ? характера.
  • Линии 5 до конца отступом - вам необходимо удалить начальные пробелы
  • Вы пропускаете конечную граничную строку

Вот измененное содержание, которое работало для меня:

MIME-Version: 1.0 
Content-Type: Multipart/Related;boundary="DeltaSync91ABCB4AF5D24B8F988B77ED7A19733D?MTOM""; 
    type="application/xop+xml""; 
    start="<[email protected]>""; 

--DeltaSync91ABCB4AF5D24B8F988B77ED7A19733D?MTOM 
content-transfer-encoding: binary 
content-type: application/xop+xml; charset=utf-8; type="application/xop+xml"" 
content-id: <[email protected]> 

<ItemOperations xmlns:xop="http://www.w3.org/2004/08/xop/include"" xmlns:B=""HMMAIL:"" xmlns:D=""HMSYNC:"" xmlns=""ItemOperations:""><Status>1</Status><Responses><Fetch><ServerId>E631966A-9439-11E1-8E7B-00215AD9A7B8</ServerId><Status>1</Status><Message><xop:Include href=""cid:[email protected]"" /></Message></Fetch></Responses></ItemOperations> 
--DeltaSync91ABCB4AF5D24B8F988B77ED7A19733D?MTOM 
content-transfer-encoding: binary 
content-type: application/octet-stream 
content-id: <[email protected]> 
--DeltaSync91ABCB4AF5D24B8F988B77ED7A19733D?MTOM--