基本認証では、ユーザー名とパスワードをbase64エンコーディングで送信する必要があります。ガイドラインは、アトラシアン社員開発者のページ上のAPIの例で見つけることができます: https://developer.atlassian.com/display/JIRADEV/JIRA+REST+API+Example+-+Basic+Authentication 、あなたがC#でそれをやっている場合は、次の形式でヘッダー内の符号化データを送信する必要があります。
「認可:基本[ENCODED CREDENTIALS]」ここ
は簡単な例です:
public enum JiraResource
{
project
}
protected string RunQuery(
JiraResource resource,
string argument = null,
string data = null,
string method = "GET")
{
string url = string.Format("{0}{1}/", m_BaseUrl, resource.ToString());
if (argument != null)
{
url = string.Format("{0}{1}/", url, argument);
}
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.ContentType = "application/json";
request.Method = method;
if (data != null)
{
using (StreamWriter writer = new StreamWriter(request.GetRequestStream()))
{
writer.Write(data);
}
}
string base64Credentials = GetEncodedCredentials();
request.Headers.Add("Authorization", "Basic " + base64Credentials);
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
string result = string.Empty;
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
result = reader.ReadToEnd();
}
return result;
}
private string GetEncodedCredentials()
{
string mergedCredentials = string.Format("{0}:{1}", m_Username, m_Password);
byte[] byteCredentials = UTF8Encoding.UTF8.GetBytes(mergedCredentials);
return Convert.ToBase64String(byteCredentials);
}
0(JiraResourceは、私が使用するAPIのどの部分かを決定するために使用するだけの列挙型です)
こちらがお役に立てば幸いです。ここで
なぜContentTypeとContentLengthが指定されていますか?あなたのコードに実際のコンテンツ/ボディが含まれているとは思われません。 – Pete
応答なしで返信すると、request.GetResponse()が例外をスローしますか? Webサーバーから少なくとも何らかの応答があるはずです。 – Joppe