我正在尝试通过JIRA REST API从C#应用程序中从Jira提取数据。为此,我执行此方法:
public string RunQuery(JiraRessource resource, string project_id, int startAt, int maxResults, string method = "GET")
{
string url = string.Format(m_BaseUrl);
if (project_id != null)
{
string jql = "search?jql=project=" + project_id;
url = string.Format("{0}{1}", url, jql);
}
string jqr = "&startAt=" + startAt + "&maxResults=" + maxResults;
url = string.Format("{0}{1}", url, jqr);
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.ContentType = "application/json";
request.Method = method;
string base64Credentials = GetEncodedCredentials();
request.Headers.Add("Authorization", "Basic " + base64Credentials);
string result = string.Empty;
using (WebResponse response = request.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
result = reader.ReadToEnd();
return result;
}
}
}
我阅读了REST API每次仅给出50个问题后,便在循环中执行此方法,以便能够获得所有问题。我收到诸如“连接超时”或“无法从传输连接读取数据”之类的错误。我在线搜索,发现与服务器的连接已丢失,但我不知道如何解决。
如果有人对我得到此错误的原因或如何解决有任何了解,我将非常感激。
答案 0 :(得分:0)
下面尝试一些方法。如果上述任何一项有效,它将帮助您找到问题的根源。
尝试请求少量数据:
string url = "<your base url>/search?jql=startAt=1&maxResults=1&fields=created";
在Web浏览器中尝试相同的URL(首先使用您在C#代码中使用的相同凭据登录Jira)
在通话前尝试以下代码:
System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate (Object obj, X509Certificate X509certificate, X509Chain chain, System.Net.Security.SslPolicyErrors errors)
{
return true;
};
检查Jira中用于api调用的用户ID的权限。