(2)

Yytan-BK / 2023-08-15 / 原文

using System;
using System.Collections.Generic;
using System.Data;
using System.Net;
using System.Text;
using Newtonsoft.Json;

namespace ConsoleApp
{
    public class DataItem
    {
        public double STKID { get; set; }
        public double SPID { get; set; }
        public string STKNAME { get; set; }
        public string CNAME { get; set; }
    }

    public class RootObject
    {
        public string statusCode { get; set; }
        public string message { get; set; }
        public List<DataItem> data { get; set; }
        public int PsessionID { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            //string apiUrl = "http://www.kuaidi100.com/query?type=yuantong&postid=11111111111";
            string apiUrl = "https://bff.gds.org.cn/gds/searching-api/ProductService/ProductListByGTIN?PageSize=30&PageIndex=1&SearchItem=06902952880294";
            //string apiUrl = "http://baike.baidu.com/api/openapi/BaikeLemmaCardApi?scope=103&format=json&appid=379020&bk_key=%E9%93%B6%E9%AD%82&bk_length=600";
            DataTable dataTable = CallApiAndConvertToDataTable(apiUrl);

            if (dataTable != null)
            {
                // 打印 DataTable 中的数据
                foreach (DataRow row in dataTable.Rows)
                {
                    Console.WriteLine("成功");
                }
            }
            Console.ReadLine();
        }

        static DataTable CallApiAndConvertToDataTable(string apiUrl)
        {
            using (WebClient client = new WebClient())
            {
                client.Encoding = Encoding.UTF8; // 设置编码为 UTF-8
                try
                {
                    byte[] jsonData = client.DownloadData(apiUrl);
                    var jsonResponse = Encoding.UTF8.GetString(jsonData); // 将字节数组转换为字符串

                    RootObject root = JsonConvert.DeserializeObject<RootObject>(jsonResponse);

                    DataTable dataTable = CreateDataTable();

                    foreach (var dataItem in root.data)
                    {
                        DataRow row = dataTable.NewRow();
                        row["STKID"] = dataItem.STKID;
                        row["SPID"] = dataItem.SPID;
                        row["STKNAME"] = dataItem.STKNAME;
                        row["CNAME"] = dataItem.CNAME;
                        dataTable.Rows.Add(row);
                    }

                    return dataTable;
                }
                catch (Exception ex)
                {
                    Console.WriteLine("发生错误:" + ex.Message);
                    return null;
                }
            }
        }



        //返回信息解析 AT10:物料编码MATCP:酒的分类MATNANE:酒的名称BRAD:酒的品牌:SPECNAME:规格名称BOSPECIO:净含量SKU:商品条码:VAT:酒的上市日期:SALEPRC:建议委售价:R:备注:HLATID:LTID:SPECID:SPECID:MATBHID:MATEHID:
        //发生错误:基础连接已关闭:传送时发生未预期的错误


        static DataTable CreateDataTable()
        {
            DataTable dataTable = new DataTable();
            dataTable.Columns.Add("STKID", typeof(double));
            dataTable.Columns.Add("SPID", typeof(double));
            dataTable.Columns.Add("STKNAME", typeof(string));
            dataTable.Columns.Add("CNAME", typeof(string));
            return dataTable;
        }
    }
}