我正在尝试使用API在JIRA中创建一个问题。 如果我在chrome中使用postman,那么它工作正常。但是,如果我尝试使用.net代码,它会给我错误。
返回的错误是" 400 Bad Request"。
我已经在StackOverflow和Web上进行了与此相关的广泛搜索,但要么我找不到解决方案,要么给出的解决方案对我没有帮助。
这是我的代码:
string data = @"{ ""fields"":{""project"":{""key"":""TES""},""summary"":""sum1"",""issuetype"":{""name"":""Bug""},""duedate"":""2013-01-24 09:00 AM +05:30"",""customfield_10000"":[{""value"":""None - Nothing""}],""reporter"":{""name"":""praveen_tadikemalla""}}}";
//tried by using new class Issue also
/* Issue data = new Issue();
data.fields = new Fields();
data.fields.description = "test";
data.fields.summary = "test bugs";
data.fields.issuetype = new IssueType();
data.fields.issuetype.name = "bug";
data.fields.project = new Project();
data.fields.project.key = "TES";
*/
string postUrl = "http://localhost:8080/rest/auth/latest/session";
System.Net.Http.HttpClient client = new System.Net.Http.HttpClient();
client.BaseAddress = new System.Uri(postUrl);
byte[] cred = UTF8Encoding.UTF8.GetBytes("amit:GoMessiGo");
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<string>(data,jsonFormatter);
//in case if i use custom Issue class
// System.Net.Http.HttpContent content = new System.Net.Http.ObjectContent<Issue>(data,jsonFormatter);
System.Net.Http.HttpResponseMessage response = client.PostAsync("http://localhost:8080/rest/api/latest/issue/", content).Result;
string result=null;
if (response.IsSuccessStatusCode)
{
result = response.Content.ReadAsStringAsync().Result;
}
else
{
result = response.StatusCode.ToString();
}
return result;
我已经在标题中发送了授权。
我可以点击获取请求的API。
我怀疑使用此方法向服务器发送post请求时存在一些问题。(client.PostAsync)
System.Net.Http.HttpResponseMessage response = client.PostAsync("http://localhost:8080/rest/api/latest/issue/", content).Result;
或者
此代码段
System.Net.Http.HttpContent content = new System.Net.Http.ObjectContent<Sting>(data,jsonFormatter);
但这些是我的假设
答案 0 :(得分:0)
我得到了它的工作。
我按照这个链接。
Creating jira issue via Rest c# httpClient
我在我的项目中使用了这个System.Net.Http.Formatting。此链接指出它只适用于Web应用程序。
如果您在我的案例中创建任何其他类型的项目,则为控制台应用程序。我需要使用另一个Json反序列化类。或者我可以使用StringContent类。
所以使用String Content类修复了我的问题