【发布时间】:2019-02-06 09:55:10
【问题描述】:
问题
我正在尝试使用 HttpWebRequest 创建对我们内部 Jira 服务器的 REST API 调用。但不知何故,我不断收到(400)错误请求错误。我也尝试过使用 WebClient 和其他方法,但我似乎没有找到正确的方法。有什么建议吗?
网址正确
用户正确
密码正确
JSON 数据也正确
一定有另一种访问远程服务器的方法吧?我一直在寻找,但似乎没有找到解决方案。
我的代码
public static void CreateJiraRequest(JiraApiObject.RootObject jiraApiObject)
{
string url = "https://jira-test.ch.*********.net/rest/api/latest/issue/";
string user = "peno.ch";
string password = "**********";
var request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/json";
request.Credentials = new System.Net.NetworkCredential(user, password);
string data = JsonConvert.SerializeObject(jiraApiObject);
using (var webStream = request.GetRequestStream())
using (var requestWriter = new StreamWriter(webStream, System.Text.Encoding.ASCII))
{
requestWriter.Write(data);
}
try
{
var webResponse = request.GetResponse();
using (var responseReader = new StreamReader(webResponse.GetResponseStream()))
{
string response = responseReader.ReadToEnd();
}
}
catch (Exception ex)
{
throw ex;
}
}
JSON
{
"fields": {
"project":
{
"key": "FOO"
},
"summary": "Test the REST API",
"issuetype": {
"name": "Task"
}
}
}
异常
在request.GetResponse();上进入try块时出现异常
附加信息:远程服务器返回错误:(400) Bad Request。
访问 Jira Wiki here
【问题讨论】:
-
阅读错误响应,它必然包含更多细节。您对 JSON 正确的假设可能是不正确的。例如,您的用户没有权限,您的数据缺少必填字段,或类似情况。如果没有任何相关数据或错误,我们对此无话可说。
-
听键盘侠Try块中的函数抛出异常唯一抛出的错误是:远程服务器返回错误:(400)错误请求。没有任何进一步的信息。我还将生成的 JSON 与 wiki 页面上列出的 JSON 进行了 1:1 匹配
-
看哥们,你正在使用古老的 HttpWebRequest,这是一个可怕的 HTTP API。参见例如.Net HttpWebRequest.GetResponse() raises exception when http status code 400 (bad request) is returned 以获取应包含更多信息的响应正文(如in the docs 所述)。或者完全切换到 HttpClient。
-
根据输入猜测是没有用的;输出包含解决此问题所需的详细信息。您的输入在语法上可能是正确的,但服务器可能需要设置更多字段或不允许您的用户在给定项目中创建给定类型的问题。获取响应正文并阅读它以了解您收到 400 响应的原因。
-
尝试检查innerException,我发现有用的消息通常隐藏在堆栈深处
标签: c# jira jira-rest-api