ASP.NET Mehrere Taskantworten speichern in der Liste der 2 Spalten
Posted: 03 Apr 2025, 02:27
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.
Dann habe ich versucht, die Liste mit dem Modell im folgenden Code zu implementieren, aber hier habe ich festgefahren
Ich möchte
Ich habe dann den Code geändert, um die Methode ApigetItemsById aufzurufen und die Aufgabe respjson;
Jede Hilfe wird geschätzt.
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; }
}
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);
}
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;
}
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);
}