Page 1 of 1

ASP.NET Mehrere Taskantworten speichern in der Liste der 2 Spalten

Posted: 03 Apr 2025, 02:27
by Anonymous
Ich bin neu in C# und ich habe diesen Code unten, wenn ich mehrere API -Anrufe tätigt. Dieser Code funktioniert gut, da ich sehen kann, dass die Listreults die Antworten aus jedem Anruf haben.

Code: Select all

List listResults = new();
var listIDs = new List
{
"ID1",
"ID2",
"ID3"
};

string baseURL = $"https://API_URL/id=";
var postTasks = listIDs.Select(p => client.GetStringAsync(baseURL + p));
var posts = await System.Threading.Tasks.Task.WhenAll(postTasks);
foreach (var postContent in posts)
{
listResults.Add(postContent);
Debug.WriteLine(postContent);
}
< /code>
Jetzt möchte ich die Antwortzeichenfolge in der Liste von 2 Spalten speichern: 1. Spalte ist die ID und die 2. Spalte ist die Antwortzeichenfolge.public class ItemResponseJsonModel
{
public string ID { get; set; }
public string ResponseJSON { get; set; }
}
Dann habe ich versucht, die Liste mit dem Modell im folgenden Code zu implementieren, aber hier habe ich festgefahren

Code: Select all

List listResults = new();
var listIDs = new List
{
"ID1",
"ID2",
"ID3"
};

string baseURL = $"https://API_URL/id=";
var postTasks = listIDs.Select(p => client.GetStringAsync(baseURL + p));
var posts = await System.Threading.Tasks.Task.WhenAll(postTasks);
foreach (var postContent in posts)
{
listResults.Add(postContent);  // This is where the error will say cannot convert string to ItemResponseJsonModel.
Debug.WriteLine(postContent);
}
Ich möchte

Code: Select all

listResults {
{ ID = "ID1", ResponseJSON = "ResponseJSON" },
{ ID = "ID2", ResponseJSON = "ResponseJSON" },
{ ID = "ID3", ResponseJSON = "ResponseJSON" },
}
< /code>
Wie kann ich das erreichen? Kann ich es im Wörterbuch  < /code>? Ich habe jedoch ein weiteres [url=viewtopic.php?t=19220]Problem[/url] und hoffentlich, um hier etwas Hilfe zu erhalten. Warum? Weil das Ergebnis manchmal mehrere Seiten hat, muss ich/während der Schleife auf die letzte Seite suchen, die nur als "[]" -Sziel überprüft wird. 
Task APIGetItemsByID(string ID)
{
int page = 1;
string? API_Key = "The-API-Key"
Task respJSON;
string respContent;
do
{
var client = new HttpClient();
string baseURL = $"https://API_URL/items?pageSize=1000&Page={page}&id=";
client.DefaultRequestHeaders.Add("Authorization", "Basic " + API_Key);
respJSON = client.GetStringAsync(baseURL + ID);
respContent = respJSON.Result;
page++;
} while (respContent != "[]" && page < 10);
return respJSON;
}
Ich habe dann den Code geändert, um die Methode ApigetItemsById aufzurufen und die Aufgabe respjson;

Code: Select all

List listResults = new();
var listIDs = new List
{
"ID1",
"ID2",
"ID3"
};

var postTasks = listIDs
.Select(async p => new ItemResponseJsonModel { ID = p, ResponseJSON = await APIGetItemsByID(p) });
var posts = await System.Threading.Tasks.Task.WhenAll(postTasks);
foreach (var postContent in posts)
{
listResults.Add(postContent);
Debug.WriteLine(postContent);
}
Jede Hilfe wird geschätzt.