首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以XML正文和文件作为附件的HTTP POST

以XML正文和文件作为附件的HTTP POST
EN

Stack Overflow用户
提问于 2018-01-09 12:11:30
回答 1查看 2K关注 0票数 1

我有个问题。我正在处理Go中的一个客户端,它与SOAP服务器有联系。我应该向服务器发送一个HTTP请求,其中包含SOAP消息。我还必须附上一份文件和请求。我该怎么做?

到目前为止,我只能够将SOAP消息放入请求中,但无法获得如何将该文件也包含在请求中。下面是生成请求的代码。如何将文件包括在此请求中?

代码语言:javascript
复制
payload := strings.NewReader(soapDataString)

req, _ := http.NewRequest("POST", endPointUrl, payload)

req.SetBasicAuth("user", "password")
req.Header.Add("content-type", "text/xml")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("SOAPAction", "")

return req
EN

回答 1

Stack Overflow用户

发布于 2018-01-09 13:37:37

要么应该使用支持添加附件的SOAP库,要么应该知道SOAP标准才能包含附件。

来自https://www.w3.org/TR/SOAP-attachments

下面的示例显示带有签名索赔表(claim061400a.tiff)传真图像的SOAP1.1消息: MIME版本: 1.0内容-类型:多部分/相关;boundary=MIME_boundary;type=text/xml;start="电子邮件:Claim-it.com“内容-描述:这是可选的消息描述。-MIME_边界内容-类型: text/xml;charset=UTF-8内容-传输-编码:8位内容-ID:电子邮件:Claim-it.com ">http://schemas.xmlsoap.org/soap/envelope/"> . -MIME_边界内容-类型:图像/ TIFF内容-传输-编码:二进制内容ID:@Claim-it.com ...binary TIFF

这是一种多部分的哑剧。您可以使用mime/多部分包轻松地生成多个部分。

下面是另一个片段,它创建一个多部分表单,其中包含来自文件系统(来自这个博客)的任意文件。

代码语言:javascript
复制
file, err := os.Open(path)
if err != nil {
    return nil, err
}
defer file.Close()

body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
part, err := writer.CreateFormFile(paramName, filepath.Base(path))
if err != nil {
    return nil, err
}
_, err = io.Copy(part, file)

err = writer.Close()
if err != nil {
    return nil, err
}

req, err := http.NewRequest("POST", uri, body)
req.Header.Set("Content-Type", writer.FormDataContentType())
return req, err
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48167984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档