通过 Rest c# httpClient 创建 jira 问题

2024-03-23

我读过 atlassian 上的一个答案https://answers.atlassian.com/questions/79902/using-httpclient-c-to-create-a-jira-issue-via-rest-generates-bad-request-response https://answers.atlassian.com/questions/79902/using-httpclient-c-to-create-a-jira-issue-via-rest-generates-bad-request-response其中一位用户通过以下代码创建了 JIRA 问题。我对其进行了调整,但通过使用自建类问题出现了错误ObjectContent

Http.HttpContent content = new Http.ObjectContent<Issue>(data, jsonFormatter);

编译器不会接受它。有人知道为什么吗?

 public string CreateJiraIssue()
        {

            string data= @"{ ""fields"": { 
                                ""project"":
                   {
                       ""key"": ""HELP""
                   },
                                ""summary"": ""Test Ticket"",
                                ""description"": ""Creating of an issue using project keys and issue type names using the REST API"",
                                ""issuetype"": {
                                    ""name"": ""Ticket""
                                },
                                ""assignee"": { ""name"": ""user"" }
                            }
            }";
            string postUrl = "https://xxx.jira.com/rest/api/2/";
            System.Net.Http.HttpClient client = new System.Net.Http.HttpClient();
            client.BaseAddress = new System.Uri(postUrl);
            byte[] cred = UTF8Encoding.UTF8.GetBytes("username:password");
            client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(cred));
            client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
            System.Net.Http.Formatting.MediaTypeFormatter jsonFormatter = new System.Net.Http.Formatting.JsonMediaTypeFormatter();

            System.Net.Http.HttpContent content = new System.Net.Http.ObjectContent<Issue>(data, jsonFormatter);
            System.Net.Http.HttpResponseMessage response = client.PostAsync("issue", content).Result;
            if (response.IsSuccessStatusCode)
            {
                string result = response.Content.ReadAsStringAsync().Result;
                return result;
            }
            else
            {
                return response.StatusCode.ToString();
            }

并使用

namespace IOnotification_System
{
    public class Issue
    {
        public Fields fields { get; set; }
        public Issue()
        {
            fields = new Fields();
        }
    }

    public class Fields
    {
        public Project project { get; set; }
        public string summary { get; set; }
        public string description { get; set; }
        public Assignee assignee { get; set; }
        public IssueType issuetype { get; set; }
        public Fields()
        {
            project = new Project();
            issuetype = new IssueType();
        }
    }

    public class Project
    {
        public string key { get; set; }
    }

    public class IssueType
    {
        public string name { get; set; }
    }
     public class Assignee
    {
        public string name { get; set; }
    }
}

EDIT

该消息清楚地表明 System.Net.Http.ObjectContent() 需要一个 Issue 对象作为其第一个参数。我预计之后会出现另一条消息,表示无法从字符串转换为问题。

您正在将字符串传递给需要 Issue 对象的方法。格式化程序用于将 Issue 对象转换为 Json 字符串。

您已经拥有该字符串,因此尝试转换它是没有意义的。仅当您有要转换为 Json 字符串的 Issue 实例时,才需要格式化程序。您可以使用字符串内容 http://msdn.microsoft.com/en-us/library/system.net.http.stringcontent.aspx类并使用它的Headers http://msdn.microsoft.com/en-us/library/system.net.http.httpcontent.headers.aspx属性来添加客户端上尚未设置的任何标头,例如:

var content=new StringContent(data);

Original

错误消息是什么以及您使用的是什么类型的项目?这System.Net.Http.Formatting http://msdn.microsoft.com/en-us/library/system.net.http.formatting.mediatypeformatter%28v=vs.108%29.aspx命名空间是 ASP.NET Web API 的一部分。您正在构建 ASP.NET 应用程序、控制台应用程序还是其他应用程序?

除非您正在构建 ASP.NET 站点,否则此代码将无法工作。如果你唯一的问题是如何解析 Json 请求,只需使用另一个 Json 反序列化类即可。Json.NET http://james.newtonking.com/projects/json-net.aspx是一个非常受欢迎的选择。

无论如何,没有理由使用 Json 类将字符串转换为包含完全相同字符串的 HttpContent 对象。您可以使用字符串内容 http://msdn.microsoft.com/en-us/library/system.net.http.stringcontent.aspx类并使用它的Headers http://msdn.microsoft.com/en-us/library/system.net.http.httpcontent.headers.aspx属性来添加客户端上尚未设置的任何标头。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 Rest c# httpClient 创建 jira 问题 的相关文章

  • EF Core Group By 翻译支持条件总和

    听说 EF Core 2 1 将支持翻译小组 我感到非常兴奋 我下载了预览版并开始测试它 但发现我在很多地方仍然没有得到翻译分组 在下面的代码片段中 对 TotalFlagCases 的查询将阻止翻译分组工作 无论如何 我可以重写这个以便我
  • C 编程 - 文件 - fwrite

    我有一个关于编程和文件的问题 while current NULL if current gt Id Doctor 0 current current gt next id doc current gt Id Doctor if curre
  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 通过 CMIS (dotCMIS) 连接到 SP2010:异常未经授权

    我正在使用 dotCMIS 并且想要简单连接到我的 SP2010 服务器 我尝试用 C 来做到这一点 如下所示http chemistry apache org dotnet getting started with dotcmis htm
  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • 为什么两个不同的 Base64 字符串的转换会返回相等的字节数组?

    我想知道为什么从 base64 字符串转换会为不同的字符串返回相同的字节数组 const string s1 dg const string s2 dq byte a1 Convert FromBase64String s1 byte a2
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • 使用 Bearer Token 访问 IdentityServer4 上受保护的 API

    我试图寻找此问题的解决方案 但尚未找到正确的搜索文本 我的问题是 如何配置我的 IdentityServer 以便它也可以接受 授权带有 BearerTokens 的 Api 请求 我已经配置并运行了 IdentityServer4 我还在
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • 为什么编译时浮点计算可能不会得到与运行时计算相同的结果?

    In the speaker mentioned Compile time floating point calculations might not have the same results as runtime calculation
  • cmake 将标头包含到每个源文件中

    其实我有一个简单的问题 但找不到答案 也许你可以给我指一个副本 所以 问题是 是否可以告诉 cmake 指示编译器在每个源文件的开头自动包含一些头文件 这样就不需要放置 include foo h 了 谢谢 CMake 没有针对此特定用例的
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在
  • 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 结合使用?

    我有两个网络服务 gRPC 客户端和 gRPC 服务器 服务器是用 NET Core编写的 然而 客户端是托管在 IIS 8 5 上的 NET Framework 4 7 2 Web 应用程序 所以它只支持HTTP 1 1 https le
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写

随机推荐

  • 无法创建新的 Chrome 远程会话

    我正在尝试使用 Selenium Grid 启动新的 Chrome 浏览器 但最终出现以下错误 无法创建新的远程会话 所需功能 功能 browserName chrome version 55 0 2 platform WINDOWS 所需
  • 如何重命名 Excel 工作表?

    我有一个场景 我想更改电子表格中工作表的名称 我尝试使用创建电子表格ss Workbook 我认为这是用名为 Sheet 的工作表创建电子表格 我尝试使用以下格式更改工作表的名称 ss sheet ss get sheet by name
  • Realm 将数据追加到类型 List

    我正在尝试遍历数据并将其保存在我的模型中 但是无论我做什么 我都会收到以下错误 Can t mutate a persisted array outside of a write transaction 我究竟做错了什么 我将每场比赛附加到
  • “文本”和 new String(“文本”) 有什么区别?

    下面这两个陈述有什么区别 String s text String s new String text new String text 显式创建一个新的且引用不同的实例String目的 String s text 可以重用来自的实例字符串常
  • Coldfusion autosuggest 不适用于字符串中间的建议

    对于我的自动建议 我使用下面的代码 输入时 它只查看字符串的开头 例如 如果我输入 abcd 它会附带建议 abcde 这很好 但它没有做什么 如果我输入 def 并且在数据库中我有一个字符串 abcdefg 那么它不会出现在自动建议中 在
  • 在 CellTable 中添加并排序的行

    我想在添加新行时对 CellTable 中的行进行排序 为了标记 UI 我使用 UIBinder
  • 如何在浏览器中读取本地文本文件?

    我试图通过创建一个函数来实现一个简单的文本文件阅读器 该函数接受文件的路径并将每行文本转换为字符数组 但它不起作用 function readTextFile var rawFile new XMLHttpRequest rawFile o
  • 在 php 中,我应该在通常返回数组的方法中返回 false、null 或空数组吗?

    我发现了一些对此的回应 但没有一个与 PHP 这是一种极其弱类型的语言 有关 关于PHP 在通常会返回数组但发生失败的方法中返回 false null 或空数组是否合适 换句话说 如果另一个开发人员加入我的项目 他们会期望看到什么 数组是事
  • 更新以前的会话数组 Laravel

    我有一个问题 如何更新我以前的数组 我的代码目前发生的情况是它只是添加新的会话数组 而不是更新声明的密钥 这是我的代码 foreach items updated as key gt added if id added item id ne
  • Mat-table 的行具有不同的子行数

    尝试使用mat table指令 例如 matRowDef and multiTemplateDataRows构建一个表 其中每行可以有不同数量的子行 示例界面如下所示 interface ReportCard student string
  • Android:标题栏和 ActionBar 有什么区别

    我无法判断它们是否是同一件事 而且它们似乎有不同的方法来删除它们 但我不确定这些是否只是做同一件事的多种方法 那么有区别吗 如果有区别的话是什么 Ref https developer android com reference andro
  • 捕获粘贴输入

    我正在寻找一种方法来清理粘贴到浏览器中的输入 这可以用 jQuery 实现吗 到目前为止我已经想出了这个 this live pasteEventName function e this is where i would like to s
  • Go:JSON 封送错误

    我正在 Go 中构建 JSON API 我想以 json 形式返回错误响应 响应示例 error Invalid request syntax 我认为我可以创建一个实现错误接口的包装结构 然后使用 Go 的 json 封送拆收器作为获取错误
  • Express 和 Redis 会话的过期时间

    我正在使用express和redis来使会话在我的系统上保持活动状态 我在设置 sessionCookie 上的 maxAge 时遇到一些问题 默认情况下 我读到的时间是 24 小时 但这对于保持其存活来说是很长的时间 我想设置大约 30
  • WordPress 按标题中的最后一个单词排序

    我有一个自定义帖子类型 员工 我需要让它在页面上按姓氏字母顺序显示员工 我知道解决方法是使用自定义元框并将名字和姓氏分成两个字段 但我试图避免这种情况 因为这看起来很黑客 不像仅使用标题字段那么干净 我有一个短代码 它将显示带有请求的员工
  • 使用 CSplitterWnd 在 CChildFrame 中创建多个视图

    我正在使用 MFC MDI 我需要创建如下视图 我的 ChildWnd 分为两部分 它们是LeftView CView 和RightView CScrollView LeftView 分为两部分 TreeView 和 FormView 我怎
  • Asp .NET 按钮 - OnClientClick="return function()" 与 OnClientClick="function()"

    在 asp net 用户控件中 我有一个按钮
  • 如何获取德威远程的 URL

    我希望能够获得像这样的 URLhttps github com user repo git给定一个远程名称 例如origin 到目前为止 我只设法获取提交哈希 gt gt gt from dulwich import porcelain g
  • 在 Python 中临时更改变量的值

    Python 3 4 提供了这个简洁的工具来临时重定向 stdout From https docs python org 3 4 library contextlib html contextlib redirect stdout wit
  • 通过 Rest c# httpClient 创建 jira 问题

    我读过 atlassian 上的一个答案https answers atlassian com questions 79902 using httpclient c to create a jira issue via rest gener