当前位置:   article > 正文

Unity使用UnityWebRequest进行POST/GET进行网络请求实例,已测试通过 可直接使用_unitywebrequest post

unitywebrequest post
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LitJson;
using Newtonsoft.Json.Linq;
using UnityEngine.Networking;
using System.Net;
using System.IO;
using System;
using System.Text;

/// <summary>
/// 网络连接类
/// </summary>
public class NetClient : MonoBehaviour
{
    public static NetClient instance;
    private void Awake()
    {
        instance = this;
    }

    private string webURL = "服务器地址";
    private string apiURL = "";
    private string appId = "003113";

    /// <summary>
    /// 连接状态
    /// </summary>
    public enum connectState
    {
        None,
        Register,//注册
        Login,//登陆
        GetCode,//获得验证码
        GetGold,//获得金币
        ConsumeGold,//消耗金币
        ResetPassword,//设置新密码
        RetrievePassword,//找回密码发送邮件
        AddGold,//增加金币,google充值
    }

    /// <summary>
    /// 当前连接状态
    /// </summary>
    private connectState currentState = connectState.None;

    #region 属性

    public bool IsBusy = false;//用于检测是否重复发送

    #endregion

 
    /// <summary>
    /// 开始连接服务器
    /// </summary>
    /// <param name="_state"></param>
    public void Client(connectState _state)
    {
        if (!IsBusy)
        {
            Utils.Log("start connectting......"+ _state);
            IsBusy = true;
            currentState = _state;
            JsonData dataJson = new JsonData();//写入json格式的数据
            byte[] postBytes;
            switch (_state)
            {
                case connectState.Register:
                    apiURL = "/api/client/v1/user/register";
                    dataJson["account"] = DataLogin.instance.GetUserAccount();
                    dataJson["code"] = DataLogin.instance.GetCode();
                    dataJson["pwd"] = DataLogin.instance.GetUserPassword();
                    postBytes = System.Text.Encoding.Default.GetBytes(dataJson.ToJson());//把json格式的字符串转化成数组
                    StartCoroutine(ConnectPost(webURL + apiURL, postBytes,0));
                    break;
                case connectState.Login:
                    apiURL = "/api/client/v1/user/login";
                    dataJson["account"] = DataLogin.instance.CurAccount;
                    dataJson["pwd"] = DataLogin.instance.CurPassword;
                    postBytes = System.Text.Encoding.Default.GetBytes(dataJson.ToJson());//把json格式的字符串转化成数组
                    StartCoroutine(ConnectPost(webURL + apiURL, postBytes, 0));
                    break;
                case connectState.GetCode:
                    apiURL = "/api/client/v1/user/getCode";
                    StartCoroutine(ConnectGet(webURL + apiURL + "?account=" + DataLogin.instance.GetUserAccount()));
                    break;
                case connectState.GetGold:
                    apiURL = "/api/client/v1/user/account";
                    StartCoroutine(ConnectGet(webURL+apiURL+ "?userId="+DataLogin.instance.GetUserID()));
                    break;
                case connectState.ConsumeGold:
                    apiURL = "/api/client/v1/user/consumeGold";
                    dataJson["gold"] = DataLogin.instance.CurGoldConsumeNum;
                    dataJson["userId"] = DataLogin.instance.GetUserID();
                    postBytes = System.Text.Encoding.Default.GetBytes(dataJson.ToJson());//把json格式的字符串转化成数组
                    StartCoroutine(ConnectPost(webURL + apiURL, postBytes, 0));
                    break;
                case connectState.ResetPassword:
                    apiURL = "/api/client/v1/user/resetPassword";
                    dataJson["code"] = DataLogin.instance.CurCode;
                    dataJson["pwd"] = DataLogin.instance.CurPassword;
                    dataJson["account"] = DataLogin.instance.CurAccount;
                    postBytes = System.Text.Encoding.Default.GetBytes(dataJson.ToJson());//把json格式的字符串转化成数组
                    StartCoroutine(ConnectPost(webURL + apiURL, postBytes, 0));
                    break;
                case connectState.RetrievePassword:
                    apiURL = "/api/client/v1/user/retrievePassword";
                    postBytes = System.Text.Encoding.Default.GetBytes(
                        "email=" + DataLogin.instance.CurAccount + "&userId=" + DataLogin.instance.GetUserID()
                        );
                    StartCoroutine(ConnectPost(webURL + apiURL, postBytes, 1));
                    break;
                case connectState.AddGold:
                    apiURL = "/api/client/v1/user/addGold";
                    dataJson["gold"] = DataLogin.instance.CurAddGold;
                    dataJson["userId"] = DataLogin.instance.GetUserID();
                    postBytes = System.Text.Encoding.Default.GetBytes(dataJson.ToJson());//把json格式的字符串转化成数组
                    StartCoroutine(ConnectPost(webURL + apiURL, postBytes, 0));
                    break;
                default:
                    IsBusy = false;
                    break;
            }            
        }
    }

    /// <summary>
    /// POST方式连接
    /// </summary>
    /// <param name="url"></param>
    /// <param name="postBytes"></param>
    /// <returns></returns>
    IEnumerator ConnectPost(string url, byte[] postBytes,int headerType)
    {
        Utils.Log(url);
        UnityWebRequest request = new UnityWebRequest(url, "POST");//method传输方式,默认为Get;

        request.uploadHandler = new UploadHandlerRaw(postBytes);//实例化上传缓存器
        request.downloadHandler = new DownloadHandlerBuffer();//实例化下载存贮器
        request.SetRequestHeader("Content-Type", headerType == 0 ? "application/json" : "application/x-www-form-urlencoded");//更改内容类型,
        request.SetRequestHeader("appId", appId);
        yield return request.SendWebRequest();//发送请求

        Utils.Log("Status Code: " + request.responseCode);//获得返回值
        IsBusy = false;
        if (request.responseCode == 200)//检验是否成功
        {
            IsBusy = false;
            Utils.Log("connect success");
            string dataStr = request.downloadHandler.text;//打印获得值
            switch (currentState)
            {
                case connectState.Register:
                    DataHandleRegister(dataStr);
                    break;
                case connectState.Login:
                    DataHandleLogin(dataStr);
                    break;
                case connectState.ConsumeGold:
                    DataHandleConsumeGold(dataStr);
                    break;
                case connectState.ResetPassword:
                    DataHandleResetPassword(dataStr);
                    break;
                case connectState.RetrievePassword:
                    DataHandleRetrievePassword(dataStr);
                    break;
                case connectState.AddGold:
                    DataHandleAddGold(dataStr);
                    break;
                default:
                    break;
            }
        }
        else
        {
            Utils.Log("connect failed,error code is " + request.responseCode);
            ViewSystemTips.instance.show(DataTips.Net_Connect_Failed+"code:"+ request.responseCode);
            IsBusy = false;
            switch (currentState)
            {
                case connectState.Register:
                    DataLogin.instance.SetUserAccount("");
                    DataLogin.instance.SetUserPasswrod("");
                    DataLogin.instance.SetCode("");
                    break;
                case connectState.Login:
                    DataLogin.instance.SetUserAccount("");
                    DataLogin.instance.SetUserPasswrod("");
                    break;                
                default:
                    break;
            }
        }
    }

    /// <summary>
    /// get方式进行连接
    /// </summary>
    /// <param name="_url"></param>
    /// <returns></returns>
    IEnumerator ConnectGet(string _url)
    {
        Utils.Log(_url);
        UnityWebRequest request = UnityWebRequest.Get(_url);
        request.SetRequestHeader("appId", appId);
        yield return request.SendWebRequest();
        //if (request.isError)
        //{
        //    IsBusy = false;
        //    Utils.Log("connect failed,error code is " + request.responseCode);
        //    ViewSystemTips.instance.show("Server connection failed");
        //}
        //else
        //{
            if (request.responseCode == 200)
            {
                IsBusy = false;
                Utils.Log("connect success");                
                string dataStr = request.downloadHandler.text;
                switch (currentState)
                {
                    case connectState.GetCode:
                        DataHandleToken(dataStr);
                        break;
                    case connectState.GetGold:
                        DataHandleGold(dataStr);
                        break;
                    default:
                        break;
                }
            }
            else
            {
                Utils.Log("connect failed,error code is " + request.responseCode);
                ViewSystemTips.instance.show(DataTips.Net_Connect_Failed+ "code is:"+request.responseCode);
                IsBusy = false;
            }
        //}
    }

    /// <summary>
    /// 处理注册数据
    /// </summary>
    private void DataHandleRegister(string _data)
    {
        Utils.Log("data:" + _data);
        JObject jsObj = JObject.Parse(_data);
        string statusStr = jsObj["status"].ToString();
        if (statusStr.Equals("success"))
        {
            Utils.Log("register success");
            string resultStr = jsObj["result"].ToString();
            Utils.Log("result:" + resultStr);
            JObject resultObj = JObject.Parse(resultStr);
            Utils.Log("account:" + resultObj["account"].ToString());
            Utils.Log("gold:" + resultObj["gold"].ToString());
            Utils.Log("token:" + resultObj["token"].ToString());
            Utils.Log("userId:" + resultObj["userId"].ToString());
            DataLogin.instance.SetUserAccount(resultObj["account"].ToString());
            DataLogin.instance.SetTokne(resultObj["token"].ToString());
            DataLogin.instance.SetUserID(resultObj["userId"].ToString());
            ViewSystemTips.instance.show(DataTips.Net_Register_Success);
            DataLogin.instance.SaveLocalUserData();
            EventManage.Instance.Event(EventName.Net_Register_Success, null);
        }
        else
        {
            Utils.Log("register failed");
            string messageStr = jsObj["message"].ToString();
            Utils.Log("message:" + messageStr);            
            ViewSystemTips.instance.show(messageStr);
        }
        
    }


    /// <summary>
    /// 处理登陆数据
    /// </summary>
    private void DataHandleLogin(string _data)
    {
        
        Utils.Log("data:" + _data);
        JObject jsObj = JObject.Parse(_data);
        string statusStr = jsObj["status"].ToString();
        if (statusStr.Equals("success"))
        {
            Utils.Log("login success");
            string resultStr = jsObj["result"].ToString();
            Utils.Log("result:" + resultStr);
            JObject resultObj = JObject.Parse(resultStr);
            Utils.Log("account:" + resultObj["account"].ToString());
            Utils.Log("gold:" + resultObj["gold"].ToString());
            Utils.Log("token:" + resultObj["token"].ToString());
            Utils.Log("userId:" + resultObj["userId"].ToString());
            DataLogin.instance.SetUserAccount(resultObj["account"].ToString());
            DataLogin.instance.SetTokne(resultObj["token"].ToString());
            DataLogin.instance.SetUserID(resultObj["userId"].ToString());

            int gold = int.Parse(resultObj["gold"].ToString());
            LocalData.GetInstance().SetCoinTotal(gold);
            //if (gold == 0)
            //{
            //    if (LocalData.GetInstance().GetGold() > 0)
            //    {
            //        DataLogin.instance.CurAddGold = LocalData.GetInstance().GetGold();
            //        Client(connectState.AddGold);
            //    }
            //}
            //else
            //{
            //    if (LocalData.GetInstance().GetGold() > gold)
            //    {
            //        DataLogin.instance.CurAddGold = LocalData.GetInstance().GetGold()- gold;
            //        Client(connectState.AddGold);
            //    }
            //    else
            //    {
            //        DataLogin.instance.CurConsumeGoldIndex = -1;
            //        DataLogin.instance.CurGoldConsumeNum = gold-LocalData.GetInstance().GetGold();
            //        Client(connectState.ConsumeGold);
            //    }
            //}   
            ViewSystemTips.instance.show(DataTips.Net_Login_Success);
            DataLogin.instance.SaveLocalUserData();
            LocalData.GetInstance().SaveLocalData();
            EventManage.Instance.Event(EventName.Net_Login_Success, null);
        }
        else
        {
            Utils.Log("login failed");
            string messageStr = jsObj["message"].ToString();
            Utils.Log("message:" + messageStr);
            ViewSystemTips.instance.show(messageStr);
        } 
    }

    /// <summary>
    /// 处理消耗金币数据
    /// </summary>
    private void DataHandleConsumeGold(string _data)
    {

        Utils.Log("data:" + _data);
        JObject jsObj = JObject.Parse(_data);
        string statusStr = jsObj["status"].ToString();
        if (statusStr.Equals("success"))
        {
            Utils.Log("consume gold success");
            string resultStr = jsObj["result"].ToString();
            Utils.Log("result:" + resultStr);
            
            //发送金币消耗成功事件,在注册位置进行本地数据修改
            EventManage.Instance.Event(EventName.Net_ConsumeGold_Success, null);
            Utils.Log("金币消耗成功,处理游戏逻辑"+ DataLogin.instance.CurConsumeGoldIndex);
        }
        else
        {
            Utils.Log("consume gold failed");
            string messageStr = jsObj["message"].ToString();
            Utils.Log("message:" + messageStr);
            ViewSystemTips.instance.show(messageStr);
        }
    }
    

    /// <summary>
    /// 处理修改密码数据
    /// </summary>
    private void DataHandleResetPassword(string _data)
    {

        Utils.Log("data:" + _data);
        JObject jsObj = JObject.Parse(_data);
        string statusStr = jsObj["status"].ToString();
        if (statusStr.Equals("success"))
        {
            Utils.Log("reset password success");
            string resultStr = jsObj["result"].ToString();
            Utils.Log("result:" + resultStr);
            
            EventManage.Instance.Event(EventName.Net_ResetPassword_Success, null);
            ViewSystemTips.instance.show(DataTips.Net_ResetPassword_Success);
        }
        else
        {
            Utils.Log("reset password failed");
            string messageStr = jsObj["message"].ToString();
            Utils.Log("message:" + messageStr);
            ViewSystemTips.instance.show(messageStr);
        }
    }

    /// <summary>
    /// 处理找回密码发送邮箱密码数据
    /// </summary>
    private void DataHandleRetrievePassword(string _data)
    {

        Utils.Log("data:" + _data);
        JObject jsObj = JObject.Parse(_data);
        string statusStr = jsObj["status"].ToString();
        if (statusStr.Equals("success"))
        {
            Utils.Log("retrieve password success");
            string resultStr = jsObj["result"].ToString();
            Utils.Log("result:" + resultStr);
            EventManage.Instance.Event(EventName.Net_RetrievePassword_Success, null);
            ViewSystemTips.instance.show(DataTips.Net_RetrievePassword_Success);
        }
        else
        {
            Utils.Log("retrieve password failed");
            string messageStr = jsObj["message"].ToString();
            Utils.Log("message:" + messageStr);
            ViewSystemTips.instance.show(messageStr);
        }
    }

    /// <summary>
    /// 处理找增加金币数据
    /// </summary>
    private void DataHandleAddGold(string _data)
    {
        Utils.Log("data:" + _data);
        JObject jsObj = JObject.Parse(_data);
        string statusStr = jsObj["status"].ToString();
        if (statusStr.Equals("success"))
        {
            Utils.Log("add gold success");
            string resultStr = jsObj["result"].ToString();
            Utils.Log("result:" + resultStr);
            //EventManage.Instance.Event(EventName.Net_AddGold_Success, null);            
        }
        else
        {
            Utils.Log("retrieve password failed");
            string messageStr = jsObj["message"].ToString();
            Utils.Log("message:" + messageStr);
            ViewSystemTips.instance.show(messageStr);

        }
    }

    /// <summary>
    /// 处理获取验证码数据
    /// </summary>
    private void DataHandleToken(string _data)
    {
        
        Utils.Log("data:" + _data);
        JObject jsObj = JObject.Parse(_data);
        string statusStr = jsObj["status"].ToString();
        if (statusStr.Equals("success"))
        {
            Utils.Log("get token success");
            string codeStr = jsObj["result"].ToString();
            Utils.Log("code:" + codeStr);
            DataLogin.instance.SetCode(codeStr);
            EventManage.Instance.Event(EventName.Net_GetCode_Success, null);
        }
        else
        {
            Utils.Log("get token failed");
            string messageStr = jsObj["message"].ToString();
            Utils.Log("message:" + messageStr);
            ViewSystemTips.instance.show(messageStr);
        }        
    }

    /// <summary>
    /// 处理获取金币数据
    /// </summary>
    private void DataHandleGold(string _data)
    {
        
        Utils.Log("data:" + _data);
        JObject jsObj = JObject.Parse(_data);
        string statusStr = jsObj["status"].ToString();
        if (statusStr.Equals("success"))
        {
            Utils.Log("get gold success");
            string resultStr = jsObj["result"].ToString();
            Utils.Log("result:" + resultStr);
            JObject resultObj = JObject.Parse(resultStr);
            string goldStr = resultObj["gold"].ToString();
            Utils.Log("gold:" + goldStr);
            LocalData.GetInstance().SetCoinTotal(int.Parse(goldStr));
            EventManage.Instance.Event(EventName.Net_GetCode_Success,null);
        }
        else
        {
            Utils.Log("get gold failed");
            string messageStr = jsObj["message"].ToString();
            Utils.Log("message:" + messageStr);
            ViewSystemTips.instance.show(messageStr);
        }            
    }
}
///*
// * url:为请求地址
// * postData:请求内容例如:"key1=value1&key2=value2&key3=value3"
// */
//void PostUrl(string url, string postData)
//{
//    IsBusy = false;
//    Utils.Log(url + "," + postData);
//    string result = "";
//    try
//    {
//        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
//        req.Method = "POST";
//        req.ContentType = "application/x-www-form-urlencoded";
//        req.Timeout = 8000;//请求超时时间
//        byte[] data = Encoding.UTF8.GetBytes(postData);
//        req.ContentLength = data.Length;
//        using (Stream reqStream = req.GetRequestStream())
//        {
//            reqStream.Write(data, 0, data.Length);

//            reqStream.Close();
//        }
//        Utils.Log("HttpWebRequest send success");
//        HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
//        Stream stream = resp.GetResponseStream();
//        //获取响应内容
//        using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
//        {
//            result = reader.ReadToEnd();
//            Utils.Log("result=====================" + result);
//            DataHandleRetrievePassword(result);
//        }
//    }
//    catch (Exception e)
//    {
//        Utils.Log("e=====================" + e.Message);

//    }
//}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302
  • 303
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • 311
  • 312
  • 313
  • 314
  • 315
  • 316
  • 317
  • 318
  • 319
  • 320
  • 321
  • 322
  • 323
  • 324
  • 325
  • 326
  • 327
  • 328
  • 329
  • 330
  • 331
  • 332
  • 333
  • 334
  • 335
  • 336
  • 337
  • 338
  • 339
  • 340
  • 341
  • 342
  • 343
  • 344
  • 345
  • 346
  • 347
  • 348
  • 349
  • 350
  • 351
  • 352
  • 353
  • 354
  • 355
  • 356
  • 357
  • 358
  • 359
  • 360
  • 361
  • 362
  • 363
  • 364
  • 365
  • 366
  • 367
  • 368
  • 369
  • 370
  • 371
  • 372
  • 373
  • 374
  • 375
  • 376
  • 377
  • 378
  • 379
  • 380
  • 381
  • 382
  • 383
  • 384
  • 385
  • 386
  • 387
  • 388
  • 389
  • 390
  • 391
  • 392
  • 393
  • 394
  • 395
  • 396
  • 397
  • 398
  • 399
  • 400
  • 401
  • 402
  • 403
  • 404
  • 405
  • 406
  • 407
  • 408
  • 409
  • 410
  • 411
  • 412
  • 413
  • 414
  • 415
  • 416
  • 417
  • 418
  • 419
  • 420
  • 421
  • 422
  • 423
  • 424
  • 425
  • 426
  • 427
  • 428
  • 429
  • 430
  • 431
  • 432
  • 433
  • 434
  • 435
  • 436
  • 437
  • 438
  • 439
  • 440
  • 441
  • 442
  • 443
  • 444
  • 445
  • 446
  • 447
  • 448
  • 449
  • 450
  • 451
  • 452
  • 453
  • 454
  • 455
  • 456
  • 457
  • 458
  • 459
  • 460
  • 461
  • 462
  • 463
  • 464
  • 465
  • 466
  • 467
  • 468
  • 469
  • 470
  • 471
  • 472
  • 473
  • 474
  • 475
  • 476
  • 477
  • 478
  • 479
  • 480
  • 481
  • 482
  • 483
  • 484
  • 485
  • 486
  • 487
  • 488
  • 489
  • 490
  • 491
  • 492
  • 493
  • 494
  • 495
  • 496
  • 497
  • 498
  • 499
  • 500
  • 501
  • 502
  • 503
  • 504
  • 505
  • 506
  • 507
  • 508
  • 509
  • 510
  • 511
  • 512
  • 513
  • 514
  • 515
  • 516
  • 517
  • 518
  • 519
  • 520
  • 521
  • 522
  • 523
  • 524
  • 525
  • 526
  • 527
  • 528
  • 529
  • 530
  • 531
  • 532
  • 533
  • 534
  • 535
  • 536
  • 537
  • 538
  • 539
  • 540
  • 541
  • 542

json解析用到了LitJson.dllNewtonsoft.Json.dll
下载地址:https://download.csdn.net/download/leo347/85403901

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/126416
推荐阅读
相关标签
  

闽ICP备14008679号