【问题标题】:Posting Json string to web api c#将 Json 字符串发布到 web api c#
【发布时间】:2017-06-08 08:42:41
【问题描述】:

我对处理 json 数据和 web api 还很陌生,但我目前正在创建一个应用程序来进一步了解它们。

目前我可以收到请求并且这些工作正常,但是我遇到了帖子问题。我正在尝试将 json 数据发布到 Jira Confluence 以创建新页面。

https://developer.atlassian.com/confdev/confluence-server-rest-api/confluence-rest-api-examples 上,它提供了以下代码来发出 curl 请求

curl -u admin:admin -X POST -H 'Content-Type: application/json' -d'{"type":"page","title":"new page", 
"ancestors":[{"id":456}], "space":{"key":"TST"},"body":{"storage":{"value":
"<p>This is a new page</p>","representation":"storage"}}}' 
http://localhost:8080/confluence/rest/api/content/ | python -mjson.tool

我目前正在使用下面的代码,它返回状态为 200,但我没有在 confluence 上看到创建的页面。我想知道是否有人可以帮助我

HttpClient _webRequest = new HttpClient();
byte[] cred = UTF8Encoding.UTF8.GetBytes(credentials);
_webRequest.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(cred));
_webRequest.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
string response = "{\"type\":\"page\",\"title\":\"new page\",\"ancestors\":[{\"id\":40635756}],\"space\":{\"key\":\"VG\"},\"body\":{\"storage\":{\"value\":\"<p>This is a new page</p>\",\"representation\":\"storage\"}}}"

var content = new StringContent(lol, Encoding.UTF8, "application/json");
var result = _webRequest.PostAsync("http://jirasite/confluence/rest/api/content/", content).Result;

【问题讨论】:

  • 很难弄清楚给定信息出了什么问题。您可以运行Fiddler,捕获请求/响应并在此处发布内容吗?
  • new StringContent(lol, Encoding.UTF8, "application/json");我没有看到这里定义的“lol”。这里有什么意义吗?
  • 嗨,对不起,我用的是响应字符串,而不是大声笑。我使用了 fiddler,它显示了 301 响应,所以我认为 API 可能已经移动,但在 confluence 网站上它仍然将 API 显示为同一位置 docs.atlassian.com/confluence/REST/latest
  • 只是出于好奇,上面提到的200状态码是怎么得到的?
  • 200 只是说它已发送我想,当我加载提琴手时,我看到了 200 请求,然后也看到了 301 响应

标签: c# asp.net .net json


【解决方案1】:

您的身份验证标头看起来不正确...您在“Basic”之后缺少空格,它应该是这样的“Basic xxx”。

请看以下文档:

https://developer.atlassian.com/confdev/confluence-server-rest-api/confluence-rest-api-examples?_ga=2.72183699.1804458933.1496916716-1816616270.1496916716#ConfluenceRESTAPIExamples-Createanewpage

问候

克雷格

【讨论】:

  • 标头很好,问题是他们已将 API 移至 /wiki/rest/api/content/
  • 此外,这个答案是错误的。 System.Net.Http.Headers.AuthenticationHeaderValue 将方案作为第二个参数。方案Basic 有效!如果这不是答案,请不要将其标记为已接受。回答您自己的问题并标记它。-
猜你喜欢
  • 2016-08-02
  • 1970-01-01
  • 1970-01-01
  • 2017-09-10
  • 1970-01-01
  • 2012-12-21
  • 1970-01-01
  • 1970-01-01
  • 2016-12-24
相关资源
最近更新 更多