Jenkins を継続的インテグレーション ツールとして使用しています。Jira の課題を更新できるように、Jira プラグインを使用しています。しかし、そこには何かが欠けています。バージョンの説明を更新することはできません。とにかく、Jira REST API を使用してそれを行うことにしました。1行で、curlでそれを行う非常に簡単な方法を見つけました:
curl -i -u user:password -H "Content-Type: application/json" -X PUT --data '{"name":"V55"}' http://jira/rest/api/latest/version/10107
ご覧のとおり、呼び出す前に取得する必要がある 2 つのパラメーター (データと URL) があり、ここで複雑になります。Jenkins で簡単にデータを取得できますが、問題は URL に関するものです。バージョン (例では 10107) は、GET 要求を使用して取得する必要がある文字列であり、結果を解析します (JSON です)。繰り返しますが、curl では非常に簡単です:
curl -i -u user:password -H "Content-Type: application/json" -X GET http://jira/rest/api/latest/project/SBX
基本的に、結果を解析してバージョンを取得し、PUT を呼び出す必要があります。そして、私はそれを行うことができません。私はANTで試しました.JSONを解析することはできましたが、引用符のためにcurl行を呼び出すことはできません. ANT で groovy スクリプトを試してみましたが、groovy ライブラリのロードに失敗します。(そして、私はすでにそれに4日間費やしました)
今、私はC#でそれをやりたいと思っています(私はWebサービスに慣れていないことを知っています)が、それを行う方法の例を見つけるたびに、何かがうまくいかない. 認証がない場合もあれば、ビジュアル スタジオが冗談を言っている場合もあります。
私は本当に明確なこのチュートリアルに従いました:http://channel9.msdn.com/shows/Endpoint/endpointtv-Screencast-Consuming-REST-services-with-HttpClient/しかし、httpclient.postをhttpclient.putに置き換えると、引数として期待されるものと、; を書いたときに表示されます。行を終了するために、VS2012 は「Microsoft.http.HttpClient」に「Put」の定義が含まれていないことを示す赤い下線を付けます。
TL;DR :
JSON のデータを使用して REST サービスに PUT 要求を実装する簡単な方法を探しています。ANTでもC#でも。ありがとう。
編集:これは私のコードが今どのように見えるかです:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using RestSharp;
namespace jira_rest_api_test
{
class Program
{
static void Main(string[] args)
{
RestClient Client = new RestClient
{
BaseUrl = "http://jira/rest/api/latest/",
Authenticator = new HttpBasicAuthenticator("user", "password")
};
RestRequest request = new RestRequest("version/10107", Method.PUT);
request.AddHeader("Accept", "application/json");
request.AddHeader("Content-Type", "application/json; charset=utf-8");
request.RequestFormat = DataFormat.Json;
request.AddBody("{\"name\":\"v23\"}");
var response = Client.Execute(request);
Console.WriteLine(request.JsonSerializer.ContentType);
Console.WriteLine(request.Resource);
Console.WriteLine(request.Parameters.Count);
Console.WriteLine(response.Content);
}
}
}
そして、これは私が得るエラーです:
{"errorMessages":["Can not instantiate value of type [simple type, class com.atlassian.jira.rest.v2.issue.version.VersionBean] from JSON String; no single-String constructor/factory method"]}