2017-09-07 5 views
0

SharePoint에서 문서의 내용을 읽으려고하고 cellstorage.csv/CellStorageService라는 웹 서비스를 다시 사용하고 있습니다.MimeKit. 다중 부분/관련 내용을 읽을 수 있습니까?

응답은 XML 부분과 이진 부분이 하나 인 멀티 파트입니다.

이진 부분을 읽고 싶습니다.

내용 유형은 다음과 같습니다

Content-Type: multipart/related; type="application/xop+xml"; boundary="urn:uuid:a192024b-547a-584b-a56c-b05f25c22fdf"; start="<[email protected]>"; start-Info="text/xml; charset=utf-8" 

콘텐츠는 반환 : 이미이 프로젝트에 MimeKit을 사용하고, 나는이되도록 Mimekit에이를로드하는 것을 시도했다

--uuid:acf0b1de-4e59-4304-ba6e-23a7a4e2a9cc+id=1 
Content-ID: <http://tempuri.org/0> 
Content-Transfer-Encoding: 8bit 
Content-Type: application/xop+xml;charset=utf-8;type="text/xml" 

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body> 
<ResponseVersion Version="2" MinorVersion="3" 
xmlns="http://schemas.microsoft.com/sharepoint/soap/"/><ResponseCollection 
WebUrl=" 

... 
></SubResponse></Response></ResponseCollection></s:Body></s:Envelope> 

--uuid:acf0b1de-4e59-4304-ba6e-23a7a4e2a9cc+id=1 
Content-ID: <http://tempuri.org/1/636403683925268534> 
Content-Transfer-Encoding: binary 
Content-Type: application/octet-stream 

그 구문 분석 할 수 있습니다

  ContentType contentType1 = ContentType.Parse("application/xop+xml"); 
      MimeEntity entity1 = MimeEntity.Load(contentType1, new MemoryStream(bytes)); 

      ContentType contentType = ContentType.Parse("application/octet-stream"); 
      MimeEntity entity = MimeEntity.Load(contentType, new MemoryStream(bytes)); 

      MimeParser parser = new MimeParser(new MemoryStream(bytes), MimeFormat.Entity); 
      //var message = parser.ParseMessage(); 
      var entity3 = parser.ParseEntity(); 

을 내가 디버거에서 결과를 볼 때, 3 개 단체 (entiy, entity1 및 전자 ntity3) 모두 똑같이 보이고, XML 컨텐트 만 파싱 된 것으로 보입니다.

이진 부분을 가져올 수 없습니다.

MimeKit을 사용하여이 유형의 콘텐츠를 구문 분석 할 수 있는지, 그리고 올바르게 구문 분석하고 있는지 알려주십시오. (Content-Type 헤더를 포함) HTTP 헤더를 구문 분석 돌봐 만 소비하는 콘텐츠 스트림을 제공 MimeKit가 처리 할 수있는 방법을 제공합니다 HttpWebResponse 클래스와 같은 클래스 이후

많은 감사

답변

0

:

여기
public static MimeEntity Load (ParserOptions options, ContentType contentType, Stream content, CancellationToken cancellationToken = default (CancellationToken)); 

public static MimeEntity Load (ContentType contentType, Stream content, CancellationToken cancellationToken = default (CancellationToken)); 

는 이러한 방법을 사용할 수있는 방법은 다음과 같습니다이 MimeEntity에 다음과 같은 두 개의 정적 방법을 사용하여에

MimeEntity ParseMultipartFormData (HttpWebResponse response) 
{ 
    var contentType = ContentType.Parse (response.ContentType); 

    return MimeEntity.Parse (contentType, response.GetResponseStream()); 
}