需要从URL读取流,更改URI中的“页面”属性,直到返回“未找到记录”字符串

问题描述 投票:0回答:1

我正在使用一个C#.NET Core控制台应用程序,该应用程序正在从URL-RPC网关中获取数据。我可以检索数据并将其写到文件中,就算遇到麻烦,甚至在我要调用的URI中增加“ page number”属性的逻辑上也遇到了一些麻烦,直到它不再返回任何数据和字符串为止“没有找到记录。”数据的每个“页面”大约有200条记录,因此,我需要增加URL中的页面号,直到它返回该字符串。

这是我的基本代码(这包括用于调试目的进行验证的控制台写入行,以后我还有其他方法将数据写入文件。)

string rpcURL;
rpcURL = "https://api.myWebsite.com/urlrpc?method=getPlacementReport&username=" + userName + "&password=" + passWord + "&class_code=" + classCode + "&from_date=" + startDate + "&to_date=" + endDate + "&page_num=1";

Console.WriteLine(rpcURL);

WebClient client = new WebClient();
client.Headers["User-Agent"] = "Mozilla/4.0 (Compatible; Windows NT 5.1; MSIE 6.0)";
var stream = client.OpenRead(rpcURL);
StreamReader sr = new StreamReader(stream);
string s = sr.ReadToEnd();

Console.WriteLine(s);

[我知道我需要创建一个变量以增加末尾的“ page_num = NUM​​BER”部分-但我需要将其递增+1,直到流阅读器准确地读取“未找到记录”。

是否有任何建议以优雅的方式做到这一点?我知道基本上我需要使用一个递增+1计数器来执行if / then语句,但是仅此而已。

c# .net console-application xml-rpc
1个回答
0
投票

您应该能够通过简单的while循环来完成此操作。假设StreamReader应该返回确切的字符串No records found,则可以使用类似于以下内容的东西。

WebClient client = new WebClient();
client.Headers["User-Agent"] = "Mozilla/4.0 (Compatible; Windows NT 5.1; MSIE 6.0)";

string rpcURL;
string s = '';
int page = 0;
while (s != 'No records found') {
    rpcURL = "https://api.myWebsite.com/urlrpc?method=getPlacementReport&username=" + userName + "&password=" + passWord + "&class_code=" + classCode + "&from_date=" + startDate + "&to_date=" + endDate + "&page_num=" + page;
    Console.WriteLine(rpcURL);
    using(var stream = client.OpenRead(rpcURL)) // both Stream and StreamReader
    using(var sr = new StreamReader(stream))    // need to be disposed.
    {
        s = sr.ReadToEnd();

        Console.WriteLine(s);
    } 
    page++;
}

© www.soinside.com 2019 - 2024. All rights reserved.