如何在C#中使用MIME响应附件?

时间:2014-03-03 17:06:24

标签: c# xml web-services soap jasperserver

我正在使用一个名为JasperServer的java编写的Web服务。我想从Web服务获取一个文件并将其保存在我的本地。


Web服务提供了一个get()方法;它请求一个XML字符串,并返回一个String,并将目标文件作为MIME附件:

public string get(string requestXmlString)

现在我尝试使用字符串来接收响应:

String res2 = webServiceClient.get(xmlInput);

它给了我一个例外:

  

客户发现响应内容类型为'multipart / related;类型= “文本/ xml” 的;开始= “< 7817FB68F69B037F5A5DEDE2AC105A65>” 中; boundary =“---- = _ Part_2_1089980294.1393857885100”',但预计'text / xml'。

请求失败,并显示错误消息:

------=_Part_2_1089980294.1393857885100
Content-Type: text/xml; charset=UTF-8
Content-Transfer-Encoding: binary
Content-Id: <7817FB68F69B037F5A5DEDE2AC105A65>

所以我的问题是如何在C#.Net中使用带有MIME附件的String响应。以及如何将它保存到我的本地?

2 个答案:

答案 0 :(得分:0)

您需要一个组件来解析RFC 822/2045和扩展所描述的MIME格式。 .NET框架不包含内置类。

我对Mime4Net组件有很好的经验(它基于Apache mime4j的端口):

Stream mimeMsgStream;
var m = new MimeMessage(mimeMsgStream);

MimeMessage为MIME结构提供DOM,可以轻松提取附件内容。另请注意,Mime4Net仅供非商业用途免费使用。

答案 1 :(得分:0)

我在使用Java WS时遇到了同样的问题。 在WCF3配置中,我只将messageEncoding属性添加到绑定定义并将其设置为&#34; Mtom&#34;。 像这样:

new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)