使用Webmethods作为客户端向JIRA REST API添加附件

使用Webmethods作为客户端向JIRA REST API添加附件,api,rest,jira,attachment,webmethods,Api,Rest,Jira,Attachment,Webmethods,我可能不是第一个尝试使用Webmethods服务中的JIRARESTAPI向JIRA添加附件的人。所以希望有人能帮忙 有两个问题,一个是关于JIRA REST API,另一个是关于Webmethods MIME服务(版本9.8) 构建addAttachment服务,使用JIRA REST API将json inputStream作为附件添加到JIRA 在webmethods中使用以下服务 pub.string:stringtoBytes. pub.io:bytestoStream. pub.mi

我可能不是第一个尝试使用Webmethods服务中的JIRARESTAPI向JIRA添加附件的人。所以希望有人能帮忙

有两个问题,一个是关于JIRA REST API,另一个是关于Webmethods MIME服务(版本9.8)

构建addAttachment服务,使用JIRA REST API将json inputStream作为附件添加到JIRA

在webmethods中使用以下服务

pub.string:stringtoBytes.
pub.io:bytestoStream.
pub.mime:createMimeData.
pub.mime:addBodyPart.
pub.mime:getEnvelopeStream.
pub.io:streamToString.
pub.client:http.
它生成的Mime流如下所示, (1.问题1,尽管在addBodyPart中,我们将消息头设置为application/json,但它似乎被覆盖并设置为自己的解释? 2.问题2,尽管在标题中将边界设置为mmmm,但Webmethods似乎使用了自己的边界值) 请你帮我解决这个问题。如果需要,可以提供屏幕截图

消息ID:
MIME版本:1.0
内容类型:多部分/表单数据
边界:毫米
名称:文件
文件名:test.json
------=_部分_134_59669361.14388043399
消息ID:
MIME版本:1.0
内容类型:文本/纯文本
内容传输编码:7bit
{“自我”:http://localhost:8090/jira/rest/api/2.0/status/10000,“说明”:“该问题目前正在处理中。”,“iconUrl”:http://localhost:8090/jira/images/icons/progress.gif“,”名称“:”进行中“,”id“:”10000“,”状态类别“:{”自我“:”http://localhost:8090/jira/rest/api/2.0/statuscategory/1“,“id”:1,“键”:“飞行中”,“颜色名称”:“黄色”、“名称”:“正在进行”}
------=\u Part_134\u 59669361.14388043399--
尝试调用服务“pub.mime:createMimeHeader”,方法是仅使用以下值设置mimeHeader的输入文档:

名称=内容类型 值=多部分/表单数据;边界=mmm

使用“contenttype”输入字段将“application/json”头添加到“pub.mime:addBodyPart”服务中。不要在pub.client:http服务中设置头

请务必真正创建多部分消息(至少两部分),否则整个消息的内容类型将设置为mime正文的内容类型,如文档中所定义:

内容类型字符串可选。此正文部分的内容类型标头的值。对于单部分邮件,此值将覆盖 MIMHEADER中的内容类型值(如果存在)。默认为 文本/纯文本

这样做会得到以下输出:

2015-08-06 22:28:10 CEST [ISP.0090.0001C] --- START tracePipeline 

[8/6/15 10:28 PM] ---
2015-08-06 22:28:10 CEST [ISP.0090.0008C] 0 Message-ID: <7862407.17.1438892890984.JavaMail.Administrator@sagbase>
MIME-Version: 1.0
Content-Type: multipart/form-data; boundary {java.lang.String} = 'mmm

--mmm
content-type: application/json

[
    "serviceName": "wx.interceptor.test.pub.measureRuntimeGraph:tester",
    "stats": {
        "avgRuntimeNano": "74918747.333",
        "standardDeviationNano": "65542825.906",
        "minNano": "12718935",
        "maxNano": "171054910",
        "varianceNano": "4295862027740509",
        "sumNano": "674268726",
        "invocations": "9"
    }
]
--mmm
content-type: application/json

[
    "serviceName": "wx.interceptor.test.pub.measureRuntimeGraph:tester",
    "stats": {
        "avgRuntimeNano": "74918747.333",
        "standardDeviationNano": "65542825.906",
        "minNano": "12718935",
        "maxNano": "171054910",
        "varianceNano": "4295862027740509",
        "sumNano": "674268726",
        "invocations": "9"
    }
]
--mmm--
'
2015-08-06 22:28:10 CEST [ISP.0090.0008C] 0 transport {com.wm.util.Values} => 
2015-08-06 22:28:10 CEST [ISP.0090.0008C] 1 protocol {java.lang.String} = 'http'
2015-08-06 22:28:10 CEST [ISP.0090.0008C] 1 subprotocol {java.lang.String} = 'HTTP'
2015-08-06 22:28:10 CEST [ISP.0090.0008C] 1 http {com.wm.util.Values} => 
2015-08-06 22:28:10 CEST [ISP.0090.0008C] 2 requestUrl {java.lang.String} = '/rest/test/new_rest'
2015-08-06 22:28:10 CEST [ISP.0090.0008C] 2 method {java.lang.String} = 'POST'
2015-08-06 22:28:10 CEST [ISP.0090.0008C] 2 requestHdrs {com.wm.util.Values} => 
2015-08-06 22:28:10 CEST [ISP.0090.0008C] 3 User-Agent {java.lang.String} = 'Mozilla/4.0 [en] (WinNT; I)'
2015-08-06 22:28:10 CEST [ISP.0090.0008C] 3 Accept {java.lang.String} = 'image/gif, */*'
2015-08-06 22:28:10 CEST [ISP.0090.0008C] 3 Host {java.lang.String} = 'localhost:5597'
2015-08-06 22:28:10 CEST [ISP.0090.0008C] 3 Content-Type {java.lang.String} = 'application/x-www-form-urlencoded'
2015-08-06 22:28:10 CEST [ISP.0090.0008C] 3 Content-Length {java.lang.String} = '864'
2015-08-06 22:28:10 CEST [ISP.0090.0008C] 2 ipInfo {com.wm.util.Values} => 
2015-08-06 22:28:10 CEST [ISP.0090.0008C] 3 localIp {java.lang.String} = '127.0.0.1'
2015-08-06 22:28:10 CEST [ISP.0090.0008C] 3 localPort {java.lang.String} = '5597'
2015-08-06 22:28:10 CEST [ISP.0090.0008C] 3 remoteIp {java.lang.String} = '127.0.0.1'
2015-08-06 22:28:10 CEST [ISP.0090.0008C] 3 remotePort {java.lang.String} = '60228'
2015-08-06 22:28:10 CEST [ISP.0090.0002C] --- END tracePipeline ---
2015-08-06 22:28:10 CEST[ISP.0090.0001C]——启动跟踪线
[8/6/15 10:28下午]---
2015-08-06 22:28:10 CEST[ISP.0090.0008C]0消息ID:
MIME版本:1.0
内容类型:多部分/表单数据;边界{java.lang.String}='mmm
--嗯
内容类型:application/json
[
“serviceName”:“wx.interceptor.test.pub.measureRuntimeGraph:tester”,
“统计数据”:{
“avgRuntimeNano”:“74918747.333”,
“标准偏差纳米”:“65542825.906”,
“minNano”:“12718935”,
“maxNano”:“171054910”,
“varianceNano”:“4295862027740509”,
“Sumno”:“674268726”,
“调用”:“9”
}
]
--嗯
内容类型:application/json
[
“serviceName”:“wx.interceptor.test.pub.measureRuntimeGraph:tester”,
“统计数据”:{
“avgRuntimeNano”:“74918747.333”,
“标准偏差纳米”:“65542825.906”,
“minNano”:“12718935”,
“maxNano”:“171054910”,
“varianceNano”:“4295862027740509”,
“Sumno”:“674268726”,
“调用”:“9”
}
]
--嗯--
'
2015-08-06 22:28:10 CEST[ISP.0090.0008C]0传输{com.wm.util.Values}=>
2015-08-06 22:28:10 CEST[ISP.0090.0008C]1协议{java.lang.String}='http'
2015-08-06 22:28:10 CEST[ISP.0090.0008C]1子目录{java.lang.String}='HTTP'
2015-08-06 22:28:10 CEST[ISP.0090.0008C]1http{com.wm.util.Values}=>
2015-08-06 22:28:10 CEST[ISP.0090.0008C]2请求URL{java.lang.String}='/rest/test/new_rest'
2015-08-06 22:28:10 CEST[ISP.0090.0008C]2方法{java.lang.String}='POST'
2015-08-06 22:28:10 CEST[ISP.0090.0008C]2请求hdrs{com.wm.util.Values}=>
2015-08-06 22:28:10 CEST[ISP.0090.0008C]3用户代理{java.lang.String}='Mozilla/4.0[en](WinNT;I)'
2015-08-06 22:28:10 CEST[ISP.0090.0008C]3接受{java.lang.String}='image/gif,*/*'
2015-08-06 22:28:10 CEST[ISP.0090.0008C]3主机{java.lang.String}='localhost:5597'
2015-08-06 22:28:10 CEST[ISP.0090.0008C]3内容类型{java.lang.String}='application/x-www-form-urlencoded'
2015-08-06 22:28:10 CEST[ISP.0090.0008C]3内容长度{java.lang.String}='864'
2015-08-06 22:28:10 CEST[ISP.0090.0008C]2 ipInfo{com.wm.util.Values}=>
2015-08-06 22:28:10 CEST[ISP.0090.0008C]3 localIp{java.lang.String}='127.0.0.1'
2015-08-06 22:28:10 CEST[ISP.0090.0008C]3 localPort{java.lang.String}='5597'
2015-08-06 22:28:10 CEST[ISP.0090.0008C]3 remoteIp{java.lang.String}='127.0.0.1'
2015-08-06 22:28:10 CEST[ISP.0090.0008C]3远程端口{java.lang.String}='60228'
2015-08-06 22:28:10 CEST[ISP.0090.0002C]——末端轨迹线---

顺便说一句,我在pub.mime:createMimeData中使用了wM 9.7。

,通过设置mimeHeader解决了这个问题,它不是作为单独的值,而是只添加一个值,在框内,用分号分隔头值,如

多部分/表单数据;边界=“------已定义-------”,名称=文件;文件名=sample.txt

由于某种原因,Webmethods在设置内容类型的末尾添加了一个回车符,并且没有考虑我们设置的边界值

生成的消息现在看起来像, `消息ID: MIME版本:1.0 内容类型:多部分/表单数据;边界=------已定义------;名称=文件; filename=sample.txt

--------明确的------ 内容类型:应用程序/文本

{“自我”:“, “说明”:“该问题目前正在处理中。”, “iconUrl”:“, “名称”:“进行中”, “id”:“10