programmer1010101 Ответов: 0

Как передать три параметра через строку API


Я очень новичок в C#. Я пишу программу с использованием visual studio c#, где она сначала попросит пользователя ввести имя сотрудника. Затем он передаст это имя через API и получит и отобразит подпись сотрудника. Я выполнил эту часть.

Далее программа попросит пользователя ввести обозначенные даты "до" и "от". Затем программа должна передать информацию о дате, а также подпись, полученную ранее через второй API, и соответственно получить и отобразить информацию в таблице данных сетки.

Для таблицы данных представления сетки я понимаю, что должен быть подключен к серверу данных SQL, которым я и являюсь.

Моя проблема в том, что

1) я не знаю, как написать код, который будет передавать три параметра API (дату "до" и "от", а также подпись сотрудника). Я попробовал код ниже, однако я получаю ошибку, когда пытаюсь связать соответствующую кнопку с кодом JSON для извлечения данных. Ошибка гласит, что "нет никакого аргумента, соответствующего требуемому формальному параметру 'toDate' из 'WebAPI.GetTime(double, double, string).'

2) я не уверен, как передать подпись, ранее полученную из другого API, через новый API.

Любая помощь будет очень признательна.

Что я уже пробовал:

Код для определения переменных:

namespace TimeSheet_Try11_Models
{
    // Root myDeserializedClass = JsonConvert.DeserializeObject<Root>(myJsonResponse); 
    public class OracleHour
    {
        public string orderNumber { get; set; }
        public DateTime dateOfWork { get; set; }
        public string description { get; set; }
        public string surveyor { get; set; }
        public string hourType { get; set; }
        public double hours { get; set; }
        public int status { get; set; }
        public string savedInOlsonTimezone { get; set; }
        public double invoicelinevalue { get; set; }
        public string articleType { get; set; }
        public DateTime dateOfWorkInSavedTimezone { get; set; }
    }

    public class MyArray
    {
        public string orderNumber { get; set; }
        public string projectnumber { get; set; }
        public string noteToInvoicer { get; set; }
        public List<object> oracleCosts { get; set; }
        public List<OracleHour> oracleHours { get; set; }
    }

    public class Root1
    {
        public List<MyArray> MyArray { get; set; }
    }



}


Код вызывающий JSON

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}?user={username}&fromDate={fromDate:yyyy-MM-dd}&toDate={toDate:yyyy-MM-dd}";
          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;


      }


Частичный код при попытке подключения соответствующей кнопки для извлечения данных (ошибка появляется в самой последней строке):

namespace TimeSheets_Try_11
{
    public partial class Form3 : Form
    {
        WebAPI WA = new WebAPI();
        public Form3()
        {
            InitializeComponent();
            webBrowser2.Url = new Uri(StaticStrings.UrlNcert);
        }

        private void Form3_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'timesDataSet.NCert_Data' table. You can move, or remove it, as needed.
            this.nCert_DataTableAdapter.Fill(this.timesDataSet.NCert_Data);

        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void GtData_Click(object sender, EventArgs e)
        {
            var connetionString = ConfigurationManager.ConnectionStrings["Times"].ConnectionString;
            try
            {
                using (SqlConnection conn = new SqlConnection(connetionString))
                {
                    using (SqlCommand cmd = new SqlCommand())
                    {
                        conn.Open();
                        using (SqlCommand Sqlcmd = new SqlCommand("NCert_Data", conn))
                        {
                            Sqlcmd.CommandType = CommandType.StoredProcedure;

                            int counter; string projectnumber; double hrs; string respname; string describe; string[] prjstat; DateTime dates;

                            for (counter = 0; counter < (dataGridView1.RowCount) - 1; counter++)
                            {
                                hrs = 0;
                                projectnumber = dataGridView1.Rows[counter].Cells[1].Value.ToString();

                                prjstat = WA.GetTime(projectnumber);


                            }
                        }
                    }
                }
            }
        }
    }
}

RickZeeland

Это трудно сказать, есть много API, каждый из которых ожидает параметров в своем собственном формате. Поэтому ищите информацию на веб-сайте или запросите дополнительную информацию у производителя API.

0 Ответов