微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从API检索数据

如何解决从API检索数据

该程序的第一部分是在输入名称后从API URL检索员工用户ID(或签名)。 (我已完成)

第二部分,用户将输入一个特定的“开始”和“开始”日期。

使用从第一部分获得的签名和用户输入的日期,程序应将此信息传递到API地址并相应地获取信息。

我的问题是我不确定如何将获得的签名传递到新的API地址+“发件人”和“发件人”日期。

该程序的第一部分检索签名(完美工作):

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),"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" + @"\";
    }
}

例如,如果我们使用9/22/20-9/29/20日期的名称“简·道(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更改为无需查询的网址:

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调用中获取usernamefromDatetoDate的值并使用string interpolation

var url = $"{StaticStrings.UrlNcert}?user={username}&fromDate={fromDate:yyyy-MM-dd}&toDate={toDate:yyyy-MM-dd}";

如果您想使用更复杂的方法,请选中UriBuilder

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?