Я использую httpClient для доступа к URL-адресу, содержащему данные JSON для Jira. Я проверил доступ к странице, и HttpResponseMessage возвращает код 200.
Когда я перехожу непосредственно к URL и логину, который также разрешает содержимое.
Однако, когда я пытаюсь прочитать тело ответа, я ничего не получаю, так как оно пустое. Я не уверен, что я делаю неправильно! Я действительно застрял, поэтому любая помощь будет оценена!
Первоначальная попытка внизу - я также удалил .Result и попытался просто использовать ответ GetStringAsync, как это, но без радости - response2 все еще пуст :(
var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes($"{username}:{token}")));
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.GetAsync(uri).Result;
var response2 = await client.GetStringAsync(uri);
//Checking that the response is returning a 200
if (response.IsSuccessStatusCode)
{
resultsTest.InnerHtml += "Success :)" + response.ToString();
}
else
{
resultsTest.InnerHtml += "Failed :( ";
}
Исходный код до внесения изменений в связи с комментариями ниже:
Я попытался прочитать тело ответа тремя различными способами (помеченными в комментариях!):
protected void Page_Load(object sender, EventArgs e)
{
testAsync();
}
protected async System.Threading.Tasks.Task testAsync()
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
//var confString = "https://myUrl.co.uk/rest/api/content?expand=body.view&limit=500&start=1&type=page";
var uriString = "https://myUrl.co.uk/rest/api/2/search?jql=project=RES&fields=key,summary&maxResults=1000&startAt=0";
var uri = new Uri(uriString);
var username = "bob";
var token = "bob";
var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes($"{username}:{token}")));
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.GetAsync(uri).Result;
//First attempt to read content body
string res = "";
using (HttpContent content = response.Content)
{
// ... Read the string.
Task<string> result = content.ReadAsStringAsync();
res = result.Result;
resultsTest.InnerHtml += "------";
resultsTest.InnerHtml += res;
}
//Second attempt to get the body to return as a string:
var contents = response.Content.ReadAsStringAsync().Result;
resultsTest.InnerHtml += contents.ToString();
//Third attempt to get the body of the response
using (HttpContent content = response.Content)
{
// ... Read the string.
string result = await content.ReadAsStringAsync();
// ... Display the result.
if (result != null &&
result.Length >= 50)
{
Console.WriteLine(result.Substring(0, 50) + "...");
resultsTest.InnerHtml += "*************";
}
}
//Checking that the response is returning a 200
if (response.IsSuccessStatusCode)
{
resultsTest.InnerHtml += "Success :)" + response.ToString();
}
else
{
resultsTest.InnerHtml += "Failed :( ";
}
}