1

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"]}
4

0 に答える 0