C# 如何从Web API接收此Json?

C# 如何从Web API接收此Json?,c#,json,asp.net-web-api,C#,Json,Asp.net Web Api,我有这个结构 客户端Web Api前端Web Api后端->数据库 因此,当我的Web Api返回Json时,我不知道如何获得结果 我没有显示与数据库的连接 在WebAPI前端,行var data=response.Content.ReadAsStringAsync().Result为我提供了包含所有正确值的Json数组。但我不知道如何将此发送到客户端的ApiCall 我必须在报税表上写些什么 [调用Web Api前端的服务] public class ApiCall { static

我有这个结构

客户端Web Api前端Web Api后端->数据库

因此,当我的Web Api返回Json时,我不知道如何获得结果

我没有显示与数据库的连接

在WebAPI前端,行
var data=response.Content.ReadAsStringAsync().Result
为我提供了包含所有正确值的Json数组。但我不知道如何将此发送到客户端的ApiCall

我必须在报税表上写些什么

[调用Web Api前端的服务]

public class ApiCall
{
    static readonly string ApiUrl = "http://Localhost:1762/api/{0}/{1}?nomePesquisa={2}&nomeMae={3}&nomePai={4}&dtNasc={5}&nrg={6}&ncpf={7}";


    //buscar os dados com os parametros digitados
    public async Task<T> GetResponse<T>(string controller, string method, string nomepesquisa, 
        string nomemae, string nomepai, string dtnasc, string nrg, string ncpf) where T : class
    {
        var client = new System.Net.Http.HttpClient();

        //Definide o Header de resultado para JSON, para evitar que seja retornado um HTML ou XML
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

        var urllink = string.Format(ApiUrl, controller, method, nomepesquisa, nomemae, nomepai, dtnasc, nrg, ncpf);
        var response = await client.GetAsync(urllink);

        //Lê a string retornada
        var JsonResult = response.Content.ReadAsStringAsync().Result;

        if (typeof(T) == typeof(string))
            return null;

        //Converte o resultado Json para uma Classe utilizando as Libs do Newtonsoft.Json
        var rootobject = JsonConvert.DeserializeObject<T>(JsonResult);
        return rootobject;
    }

}
公共类ApiCall
{
静态只读字符串APIRL=”http://Localhost:1762/api/{0}/{1}?nomePesquisa={2}&nomeMae={3}&nomePai={4}&dtNasc={5}&nrg={6}&ncpf={7}”;
//数据总线
公共异步任务GetResponse(字符串控制器、字符串方法、字符串nomepesquisa、,
字符串nomemae、字符串nomepai、字符串dtnasc、字符串nrg、字符串ncpf)其中T:class
{
var client=new System.Net.Http.HttpClient();
//定义JSON结果的头,定义HTML和XML
client.DefaultRequestHeaders.Accept.Add(新的MediaTypeWithQualityHeaderValue(“应用程序/json”);
var urlink=string.Format(APIRL、控制器、方法、nomepesquisa、nomemae、nomepai、dtnasc、nrg、ncpf);
var response=await client.GetAsync(urlink);
//拉那达
var JsonResult=response.Content.ReadAsStringAsync().Result;
if(typeof(T)=typeof(string))
返回null;
//转换为resultado Json para uma Classe utilizando作为Libs do Newtonsoft.Json
var rootobject=JsonConvert.DeserializeObject(JsonResult);
返回根对象;
}
}
[Web Api前端调用Web Api后端]

[HttpGet]
[Route("Envolvidos")]
public IEnumerable<Envolvido> GetEnvolv(string nomePesquisa, string nomeMae, string nomePai, string dtNasc
   , string nRG, string nCPF)
{

    DataSet lretorno = new DataSet();

    using (var client = new HttpClient())
    {
        client.BaseAddress = new Uri("http://Localhost:1762/");
        client.DefaultRequestHeaders.Accept.Clear();
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

        // Usage
        HttpResponseMessage response = client.GetAsync("api/nomes/Envolvidos?nomePesquisa="+nomePesquisa+"&nomeMae="+nomeMae+"&nomePai="+nomePai+"&dtNasc="+dtNasc+"&nrg="+nRG+"&ncpf="+nCPF+"").Result;

        if (response.IsSuccessStatusCode)
        {
            var data = response.Content.ReadAsStringAsync().Result;
            //Envolvido envolvidoResult = JsonConvert.DeserializeObject<Envolvido>(data);
            return data.AsEnumerable().Select(row => new Envolvido
        {

        });

        }
        else
        {
            Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);
        }


        //return WHATTTTT?? ;

    }

}
[HttpGet]
[路线(“环境视频”)]
公共IEnumerable GetEnvolv(字符串nomePesquisa、字符串nomeMae、字符串nomePai、字符串dtNasc
,字符串nRG,字符串nCPF)
{
数据集lretorno=新数据集();
使用(var client=new HttpClient())
{
client.BaseAddress=新Uri(“http://Localhost:1762/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(新的MediaTypeWithQualityHeaderValue(“应用程序/json”);
//用法
HttpResponseMessage response=client.GetAsync(“api/nomes/Envolvidos?nomePesquisa=“+nomePesquisa+”&nomeMae=“+nomeMae+”&nomePai=“+nomePai+”&dtNasc=“+dtNasc+”&nrg=“+nrg+”&ncpf=“+ncpf+”)。结果;
if(响应。IsSuccessStatusCode)
{
var data=response.Content.ReadAsStringAsync().Result;
//Envolvido envolvidoResult=JsonConvert.DeserializeObject(数据);
返回数据.AsEnumerable().Select(行=>new Envolvido
{
});
}
其他的
{
Console.WriteLine(“{0}({1})”,(int)response.StatusCode,response.ReasonPhrase);
}
//返回WHATTTTT;
}
}
[WebApi返回]

[HttpGet]
[Route("Envolvidos")]
public IEnumerable<Envolvido> GetEnvolv(string nomePesquisa, string nomeMae, string nomePai, string dtNasc
   , string nRG, string nCPF)
{

    DataSet lretorno = new DataSet();

    using (var client = new HttpClient())
    {
        client.BaseAddress = new Uri("http://Localhost:1762/");
        client.DefaultRequestHeaders.Accept.Clear();
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

        // Usage
        HttpResponseMessage response = client.GetAsync("api/nomes/Envolvidos?nomePesquisa="+nomePesquisa+"&nomeMae="+nomeMae+"&nomePai="+nomePai+"&dtNasc="+dtNasc+"&nrg="+nRG+"&ncpf="+nCPF+"").Result;

        if (response.IsSuccessStatusCode)
        {
            var data = response.Content.ReadAsStringAsync().Result;
            //Envolvido envolvidoResult = JsonConvert.DeserializeObject<Envolvido>(data);
            return data.AsEnumerable().Select(row => new Envolvido
        {

        });

        }
        else
        {
            Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);
        }


        //return WHATTTTT?? ;

    }

}
[HttpGet]
[Route("Envolvidos")]
public IEnumerable<Envolvido> GetEnvolv(string nomePesquisa, string nomeMae, string nomePai, string dtnasc
    , string nRG, string nCPF)
{

    DataSet lretorno = new DataSet();

    string connectionString = GetConnectionString();
    using (OracleConnection connection = new OracleConnection())
    {
        connection.ConnectionString = connectionString;

        OracleDataReader reader = null;
        OracleCommand cmd = new OracleCommand();
        cmd.Connection = connection;
        cmd = new OracleCommand("MOBILE.XAPIMANDADOMOBILE.BUSCAPOSSIVEISCANDIDATOSPF", connection);
        cmd.CommandType = CommandType.StoredProcedure;

        //variáveis entrada            
        cmd.Parameters.Add(new OracleParameter("ivnome",nomePesquisa));
        cmd.Parameters.Add(new OracleParameter("ivmae", nomeMae));
        cmd.Parameters.Add(new OracleParameter("ivpai", nomePai));
        cmd.Parameters.Add(new OracleParameter("ivdatanasc", dtnasc));
        cmd.Parameters.Add(new OracleParameter("ivrg", nRG));
        cmd.Parameters.Add(new OracleParameter("icpf", nCPF));
        //variáveis de saida          
        cmd.Parameters.Add(new OracleParameter("oretorno", OracleDbType.RefCursor)).Direction = ParameterDirection.Output;
        cmd.Parameters.Add(new OracleParameter("qretorno", OracleDbType.RefCursor)).Direction = ParameterDirection.Output;

        connection.Open();
        cmd.ExecuteNonQuery();

        reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);

        //CRIO A LISTA
        lretorno.Load(reader, LoadOption.OverwriteChanges, "BUSCAPOSSIVEISCANDIDATOSPF");
        connection.Close();
        connection.Dispose();


        //CARREGO O DATASET E TRANSFORMO PARA IENUMERABLE E RETORNO SEUS VALORES PRO JSON
        return lretorno.Tables[0].AsEnumerable().Select(row => new Envolvido
        {
            SUSPID = Convert.ToInt32(row["SUSPID"]),
            IVNOME = Convert.ToString(row["SUSPNOME"]),
            IVMAE = Convert.ToString(row["SUSPMAE"]),
            IVPAI = Convert.ToString(row["SUSPPAI"]),
            IVDATANASC = Convert.ToString(row["SUSPDATANASC"]).Replace(" 00:00:00", ""),
            IVRG = Convert.ToString(row["RG"]),
            ICPF = Convert.ToString(row["CPF"]),
            MANDADO = Convert.ToInt16(row["TEMMANDADO"]),
            OCORRENCIA = Convert.ToInt16(row["TEMOCORRENCIA"]),

        });


    }
}
[HttpGet]
[路线(“环境视频”)]
公共IEnumerable GetEnvolv(字符串nomePesquisa、字符串nomeMae、字符串nomePai、字符串dtnasc
,字符串nRG,字符串nCPF)
{
数据集lretorno=新数据集();
string connectionString=GetConnectionString();
使用(OracleConnection=newOracleConnection())
{
connection.ConnectionString=ConnectionString;
OracleDataReader=null;
OracleCommand cmd=新的OracleCommand();
cmd.Connection=连接;
cmd=新的OracleCommand(“MOBILE.XAPIMANDADOMOBILE.BUSCAPOSSIVEISCANDIDATOSPF”,连接);
cmd.CommandType=CommandType.storedProcess;
//瓦里亚维因特拉达酒店
添加(新的OracleParameter(“ivnome”,nomePesquisa));
添加(新的OracleParameter(“ivmae”,nomeMae));
cmd.Parameters.Add(新的OracleParameter(“ivpai”,nomePai));
Add(新的OracleParameter(“ivdatanasc”,dtnasc));
添加(新的OracleParameter(“ivrg”,nRG));
cmd.Parameters.Add(新的OracleParameter(“icpf”,nCPF));
//萨伊达庄园酒店
cmd.Parameters.Add(新的OracleParameter(“oretorno”,OracleDbType.RefCursor)).Direction=ParameterDirection.Output;
cmd.Parameters.Add(新的OracleParameter(“qretorno”,OracleDbType.RefCursor)).Direction=ParameterDirection.Output;
connection.Open();
cmd.ExecuteNonQuery();
reader=cmd.ExecuteReader(CommandBehavior.CloseConnection);
//克里奥·利斯塔
lretorno.Load(读卡器,LoadOption.OverwriteChanges,“BUSCAPOSSIVEISCANDIDATOSPF”);
connection.Close();
connection.Dispose();
//CARREGO O数据集E TRANSFORMO PARA IENUMERABLE E Retrono SEUS VALORES PRO JSON
返回lretorno.Tables[0].AsEnumerable().Select(行=>newEnvolVido
{
suspeid=Convert.ToInt32(行[“suspeid”]),
IVNOME=Convert.ToString(第[“suspenome”]行),
IVMAE=Convert.ToString(行[“suspemae”]),
IVPAI=Convert.ToString(行[“suspempai”]),
IVDATANASC=Convert.ToString(第[“suspendatanasc”行]).Replace(“00:00:00”,”),
IVRG=Convert.ToString(行[“RG”]),
ICPF=Convert.ToString(第[“CPF”]行),
MANDADO=Convert.ToInt16(第[“TEMMANDADO”行]),
OCORRECIA=转换为16(第[“TEMOCORRECIA”]行),
});
}
}

Web API后端正在返回
IEnumerable

当Web Api前端调用Web Api后端时,它只需要将其反序列化为可分配给
IEnumerable
,可以是列表、集合、数组等

//...other code removed for brevity
if (response.IsSuccessStatusCode)
{
    var data = response.Content.ReadAsAsync<List<Envolvido>>().Result;
    return data;
}
//...other code removed for brevity
/…为简洁起见,删除了其他代码
if(响应。IsSuccessStatusCode)
{
var data=response.Content.ReadAsAsync().Result;
返回数据;
}
//…为简洁起见,删除了其他代码

在将结果发送到客户端之前,是否需要在Web API前端对结果进行任何更改?@Nkosi Yes!