Получение Json данных с помощью HttpWebRequests - PullRequest
0 голосов
/ 16 июня 2020

Как я могу использовать HttpRequest для отправки Json с использованием C#

У меня есть этот код, и он работает, и возвращает такие результаты, как этот

"[{\"Fullname\":\"John Snow\",\"Telephone\":\"08147720192\",\"gender\":\"Male\",\"email\":\"john.snow@gmail.com\",\"date_ofbirth\":\"1985-06-22T00:00:00\",\"nationalID\":\"JS834788US\",\"accountnumber\":\"0034773291\",\"salary\":800000.00}]"

Я бы предпочел хотите, чтобы он возвращался без []

Итак, это должно выглядеть так:

string json = "{\"Fullname\":\"John Snow\",\"Telephone\":\"08147720192\",\"gender\":\"Male\",\"email\":\"john.snow@gmail.com\",\"date_ofbirth\":\"1985-06-22T00:00:00\",\"nationalID\":\"JS834788US\",\"accountnumber\":\"0034773291\",\"salary\":800000.00}";

Так что его можно легко прочитать, исходный код C# Выглядит так:

      public static Object GETRESTInfo(string restUrl, string reqMethod)
        {
            var request = (HttpWebRequest)WebRequest.Create(restUrl);
            var response = (HttpWebResponse)request.GetResponse();

            var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
            return responseString;
}

Здесь нужна помощь, я новичок в HttpWebRequests

Обновлено. Вот код, в котором я делаю запрос от

using EmployeeRESTAPI.Models;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;

namespace EmployeeRESTAPI.Controllers
{
    public class EmployeeDBController : ApiController
    {
        string MyconnectionString = "Data Source=DLX;Initial Catalog=EmployeeDB;Integrated Security=True";
        // GET api/<controller>
        public IEnumerable<EmployeeDB> Get()
        {
            SqlConnection con = new SqlConnection(MyconnectionString);
            DataTable dt = new DataTable();
            con.Open();

            string query = "select* from [EmployeeDB].[dbo].[EmployeeTable]";
            SqlDataAdapter adapter = new SqlDataAdapter(query, con);
            adapter.Fill(dt);

            List<EmployeeDB> empdb = new List<Models.EmployeeDB>(dt.Rows.Count);
            if (dt.Rows.Count > 0)
            {
                foreach (DataRow empdbrecord in dt.Rows)
                {
                    empdb.Add(new ReadEmployee(empdbrecord));
                }
            }
            return empdb;
        }

        // GET api/<controller>/5
        public IEnumerable<EmployeeDB> Get(string accountnumber)
        {
            SqlConnection con = new SqlConnection(MyconnectionString);
            DataTable dt = new DataTable();
            con.Open();

            string query = "select * from [EmployeeDB].[dbo].[EmployeeTable] where accountnumber = '" + accountnumber + "'";
            SqlDataAdapter adapter = new SqlDataAdapter(query, con);
            adapter.Fill(dt);

            List<EmployeeDB> empdb = new List<Models.EmployeeDB>(dt.Rows.Count);
            if (dt.Rows.Count > 0)
            {
                foreach (DataRow empdbrecord in dt.Rows)
                {
                    empdb.Add(new ReadEmployee(empdbrecord));
                }
            }
            return empdb;
        }

        // POST api/<controller>
        public void Post([FromBody]string value)
        {
        }

        // PUT api/<controller>/5
        public void Put(int id, [FromBody]string value)
        {
        }

        // DELETE api/<controller>/5
        public void Delete(int id)
        {
        }
    }
}

1 Ответ

0 голосов
/ 16 июня 2020

Вы должны вернуть одного сотрудника вместо IEnumerable:

public EmployeeDB Get(string accountnumber)
    {
        SqlConnection con = new SqlConnection(MyconnectionString);
        DataTable dt = new DataTable();
        con.Open();

        string query = "select * from [EmployeeDB].[dbo].[EmployeeTable] where accountnumber = '" + accountnumber + "'";
        SqlDataAdapter adapter = new SqlDataAdapter(query, con);
        adapter.Fill(dt);

        if (dt.Rows.Count > 0)
        {
            return new ReadEmployee(dt.Rows[0]);
        }

        throw new Exception("Account not found"); 
    }

И, как сказал @Mike Cheel, ваш запрос может быть использован с использованием SQL инъекции, исправьте это, используя параметры в вашем SQL запрос

...