2015-08-06 1 views
3

Je ne suis probablement pas la première personne à essayer d'ajouter une pièce jointe à JIRA à l'aide de l'API JIRA REST du service Webmethods. Donc, en espérant que quelqu'un sera en mesure d'aider.Ajout de pièces jointes à l'API JIRA REST à l'aide de Webmethods en tant que client

Il existe deux problèmes, l'un avec l'API JIRA REST, deux avec les services WebMethods MIME (version 9.8).

Création d'un service addAttachment pour ajouter en tant que pièce jointe un flux d'entrée json à JIRA à l'aide de l'API JIRA REST.

Faisant usage des services suivants dans webMethods,

pub.string:stringtoBytes. 
pub.io:bytestoStream. 
pub.mime:createMimeData. 
pub.mime:addBodyPart. 
pub.mime:getEnvelopeStream. 
pub.io:streamToString. 
pub.client:http. 

Le Mime flux qu'elle produit, est comme ci-dessous, (1. Problème 1, Bien que, dans addBodyPart, nous mettons l'en-tête du message à l'application/json, il semble être prioritaire et mettre à sa propre interprétation? 2. Problème 2, bien que la limite est définie dans l'en-tête à mmmm, Webmethods semble utiliser sa propre valeur limite) S'il vous plaît pouvez-vous aider à résoudre ce problème. Peut fournir des captures d'écran si nécessaire.

Message-ID: <[email protected]> 
 
    MIME-Version: 1.0 
 
    Content-type: multipart/form-data 
 
    boundary: mmmm 
 
    name: file 
 
    filename: test.json 
 
      
 
    ------=_Part_134_59669361.1438880433399 
 
    Message-ID: <902143670.133.1438880433399.Ja[email protected]> 
 
    MIME-Version: 1.0 
 
    content-type: text/plain 
 
    content-transfer-encoding: 7bit 
 
    {"self": "http://localhost:8090/jira/rest/api/2.0/status/10000","description": "The issue is currently being worked on.","iconUrl":"http://localhost:8090/jira/images/icons/progress.gif","name": "In Progress","id": "10000","statusCategory":{"self":"http://localhost:8090/jira/rest/api/2.0/statuscategory/1","id": 1, "key":"in-flight","colorName": "yellow","name": "In Progress" }} 
 
      
 
      
 
    ------=_Part_134_59669361.1438880433399--

Problème 2, avec l'API JIRA REST, le document mime ci-dessus comme entrée jette, 415 non pris en charge Type de support, de l'appel HTTP POST, à URL, Essayer d'ajouter une pièce jointe en appelant l'API JIRA REST.

Il est un client HTTP appel POST, en passant dans un objet mime - comme un flux, le flux mime qui est transmis est comme ci-dessus, Obtenez un 415, Type de support non pris en charge Message d'erreur. Rien dans les journaux JIRA.

Répondre

2

Essayez d'appeler le service "pub.mime: createMimeHeader" en réglant uniquement le document d'entrée pour le mimeHeader avec les valeurs suivantes:

Name = Content-Type Valeur = multipart/form-data; borne = mmm

Ajoutez votre en-tête "application/json" au service "pub.mime: addBodyPart" avec le champ de saisie "contenttype". Ne définissez pas l'en-tête dans le service pub.client: http.

Prenez soin que vous créez vraiment un message multipart (au moins deux parties), sinon le type de contenu du message entier est réglé sur le type de contenu de votre corps mime, tel que défini dans la documentation:

contentype Chaîne Facultatif. La valeur de l'en-tête Content-Type pour cette partie du corps. Pour les messages en une seule partie, cette valeur remplace la valeur Content-Type dans mimeHeader, le cas échéant. La valeur par défaut est text/plain.

Faire comme cela, je reçois la sortie suivante:

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: <[email protected]> 
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 --- 

J'utilise wM 9.7 btw.

+0

Dans le pub.mime: createMimeData, résolu ceci en définissant le mimeHeader, pas en tant que valeurs séparées, mais en ajoutant une seule valeur et dans la boîte, séparés les valeurs d'en-tête par point-virgule, comme – Jerry

0

Dans le pub.mime: createMimeData, résolu en définissant le mimeHeader, pas en tant que valeurs séparées, mais en ajoutant une seule valeur et dans la boîte, séparé les valeurs d'en-tête par point-virgule, comme

multipart/form-data; ------ defined ------ "; nom = fichier; filename = sample.txt

pour une raison quelconque, Webmethods ajoute un retour chariot à la fin du paramètre Content-type et la valeur limite nous avons fixé n'a pas été pris en considération.

Le message généré ressemble maintenant, `Message-ID: < [email protected]> MIME-Version: 1.0 Content-Type: multipart/form-data; limite = ------ défini ------; nom = fichier; filename = sample.txt

-------- ------ défini Content-Type: application/texte

{ "auto": "http://localhost:8090/jira/rest/api/2.0/status/10000", "description" : "La question est actuellement en cours d'élaboration.", "IconURL": "http://localhost:8090/jira/images/icons/progress.gif", "name": "En cours", "id": "10000", "statusCategory": { "auto" : "http://localhost:8090/jira/rest/api/2.0/statuscategory/1", "id": 1, "clé": "en vol", "colorName": "jaune", "couleur Nom ":" jaune ", " clé ":" en vol ", " colorName ":" jaune ", " clé ":" en vol ", " colorName ":" jaune ", " clé ":" en vol ", " colorName ":" jaune ", " clé ":" en vol ", " colorName ":" jaune ", " nom ":" En cours "}} - ------- ------ défini Content-type: application/texte

{ "auto": "http://localhost:8090/jira/rest/api/2.0/status/10000", "description": "La question est actuellement en cours d'élaboration." , "iconUrl": "http://localhost:8090/jira/images/icons/progress.gif", "name": "En cours " "id": "10000", "statusCategory": { "auto": "http://localhost:8090/jira/rest/api/2.0/statuscategory/1", "id": 1, "clé": "en vol", "colorName":" jaune ", " clé ":" en vol ", " colorName ":" jaune ", " clé ":" en vol ", " colorName ":" jaune ", " colorName ":" jaune " ", " nom ":" En cours "}} -------- défini --------`

+0

Ceci est dans Webmethods 9.8, bien que cela soit résolu, JIRA API, ne prend pas le flux mime, et jette 415 Unsupported Media Type – Jerry

+0

JiRA Rest Api pour ajouter des données de pièce jointe à un problème ne supporte pas les données de flux. Il ne supporte que l'objet fichier. – Jerry

+0

HTTP 415, peut être résolu en définissant le type de contenu. JIRa Api a jeté HTTP 500 Internal Server Error, car il ne prend pas en charge les flux d'entrée. – Jerry