【发布时间】:2020-06-16 12:15:40
【问题描述】:
如何使用 C# 使用 HttpRequest 发送 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}]"
我宁愿希望它在没有 [] 的情况下返回
所以它应该是这样的:
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)
{
}
}
}
【问题讨论】:
-
HttpServer也是自己做的吗?由于服务器发送响应,您必须更改服务器代码,因此 http 请求与此无关。但是您可以删除字符串的括号(第一个和最后一个字符)或解析 json 字符串并返回列表的第一个元素。
-
我已经构建了 REST api,结果是我展示给你的第一个 Json。有没有办法,我可以直接从代码中返回没有括号的 Json?
-
您必须向我们展示发送响应的服务器代码,因为这是服务器端的问题,而不是来自客户端本身。
-
我猜你的意思是数据库?从数据库中检索数据的那个?我已经更新了代码。
-
Get 返回 IEnumerable。如果您只想返回一个,则更改签名并返回单个项目。