c# - 从 API 检索数据
问题描述
该程序的第一部分是在输入名称后从 API URL 检索员工用户 ID(或签名)。(我已经完成了)
第二部分,用户将输入特定的“to”和“from”日期。
使用从第一部分获得的签名和用户输入的日期,程序应该将此信息传递给 API 地址并相应地获取信息。
我的问题是我不确定如何将获得的签名传递给新的 API 地址+“to”和“from”日期。
检索签名的程序的第一部分(完美运行):
namespace TimeSheets_Try_11.Controllers
{
class WebAPI
{
public string Getsignature(string name)
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
var cookies = FullWebBrowserCookie.GetCookieInternal(new Uri(StaticStrings.UrlIora), false);
WebClient wc = new WebClient();
wc.Encoding = System.Text.Encoding.UTF8;
wc.Headers.Add("Cookie:" + cookies);
wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
wc.UseDefaultCredentials = true;
string uri = "";
uri = StaticStrings.UrlIora + name;
var response = wc.DownloadString(uri);
var status = JsonConvert.DeserializeObject<List<Employeename>>(response);
string signame = status.Select(js => js.signature).First();
return signame;
}
到目前为止我写的第二部分:
public string[] GetTime(double fromDate, double toDate, string username)
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
var cookies = FullWebBrowserCookie.GetCookieInternal(new Uri(StaticStrings.UrlNcert), false);
WebClient wc = new WebClient();
wc.Encoding = System.Text.Encoding.UTF8;
wc.Headers.Add("Cookie:" + cookies);
wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
wc.UseDefaultCredentials = true;
string url = "";
url = StaticStrings.UrlNcert + username + "&fromDate=" + fromDate + "&toDate=" + toDate;
var respons = wc.DownloadString(url);
OracleHour ndata = JsonConvert.DeserializeObject<OracleHour>(respons);
var Get_Odnum = ndata.orderNumber;
var Dt_Work = ndata.dateOfWork;
var hrType = ndata.hourType;
var hr = ndata.hours;
var des = ndata.description;
var surname = ndata.surveyor;
string[] myncertdata = { Get_Odnum, Dt_Work.ToString(), hrType, hr.ToString(), des, surname };
return myncertdata;
}
}
}
API 字符串:
namespace TimeSheets_Try_11.Controllers
{
class StaticStrings
{
public static string UrlIora = "https://iora.dnvgl.com/api/dictionary/employee/";
public static string UrlNcert = "https://cmcservices.dnvgl.com/Finance/api/oracleReportingCost?user=VERIT" + @"\";
}
}
例如,如果我们在 2020 年 9 月 22 日至 2020 年 9 月 29 日期间使用名称“Jane Dow”,则 api 字符串将为
UrlIora = "https://iora.dnvgl.com/api/dictionary/employee/Jane
UrlNcert = "https://cmcservices.dnvgl.com/Finance/api/oracleReportingCost?user=VERIT\JDOW&fromDate=2020-09-22&toDate=2020-09-29"
解决方案
简单的方法 - 首先将 UrlNcert 更改为 url 而无需查询:
class StaticStrings
{
public static string UrlIora = "https://iora.dnvgl.com/api/dictionary/employee/";
public static string UrlNcert = "https://cmcservices.dnvgl.com/Finance/api/oracleReportingCost";
}
然后在您的 api 调用中获取值username
,fromDate
并toDate
使用字符串插值。
var url = $"{StaticStrings.UrlNcert}?user={username}&fromDate={fromDate:yyyy-MM-dd}&toDate={toDate:yyyy-MM-dd}";
如果您想要更复杂的方式,请检查UriBuilder
推荐阅读
- outlook - 显示远程计算机状态
- asp.net-core - SignalR 的 WebSocket 中间件
- geometry - 如何消除两个圆的碰撞?
- python - AttributeError:'NoneType'对象没有属性'exec_command',将代码行转换为函数时,在python中
- variables - 如何在变量中添加换行符?
- python - Python BeautifulSoup include blank lines
- vba - 如何从房产税网站上抓取数据
- django - django-autocomplete-light 的建议显示在下拉列表之外
- python - 在 Macbook 上使用 plot_tree 可视化 XGB
- html - 如何用边框半径将文本环绕在形状周围?