gpt4 book ai didi

c# - 调用asmx webservice时如何为base64Binary发送数据

转载 作者:行者123 更新时间:2023-11-30 12:11:25 30 4
gpt4 key购买 nike

我必须调用一个 asmx 网络服务,它接受 AttachmentData 作为参数。这有一个类型为 base64Binary 的成员。

<s:complexType name="AttachmentData">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="FileName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="UploadedUserName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Attachment" type="s:base64Binary" />
</s:sequence>
</s:complexType>

我正在发送附件成员的文件内容如下:

//read the file contents
byte[] buffer = null;
try {
FileInfo attachment = new FileInfo(filepath);
using (FileStream stream = attachment.OpenRead()) {
if (stream.Length > 0) {
buffer = new byte[stream.Length];
stream.Read(buffer, 0, (int)stream.Length);
}
}
}
catch {
buffer = null;
}

//create AttachmentData object
WebSrvc.AttachmentData att = new WebSrvc.AttachmentData();
att.FileName = fileName;
att.Attachment = buffer;

这是发送 base64Binary 的正确方法吗?我需要将文件内容编码为 base64 还是即时完成?我想看看我是否通过使用上面的代码不必要地膨胀了 web 服务请求的大小。

最佳答案

A Base 64 encoding对于输入中的每 3 个字节,输出中需要 4 个字节,因此会有一些开销,但并不多。

Base 64 编码的好处在于它只使用可打印字符,因此很容易嵌入到 HTTP 协议(protocol)中,该协议(protocol)是为处理人类可读文本字符而构建的。

在您的代码示例中,byte[] 缓冲区在被放置在网络上之前会自动转换为 Base 64(即在 HTTP 协议(protocol)中嵌入和传输)。

关于c# - 调用asmx webservice时如何为base64Binary发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15410697/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com