1 using System.Collections;
 2 using System.Collections.Generic;
 3 using UnityEngine;
 4 using UnityEngine.Networking;
 5 using LitJson;
 6 using System.IO;
 7 using System.Net;
 8 
 9 
10 public class Connet : MonoBehaviour {
11 
12     //private ArrayList List = new ArrayList(5);
13     //private Rect rect = new Rect(10, 50, 150, 150);
14     //请求地址,写自己的请求地址就行
15     private string url = "http://xxxxxxxxx/ApiServlet?method=list";
16     //声明 JsonData     LitJson 提供的方法
17     JsonData itemdata;
18     //新建 List 存放数据
19     private List<Item> dataBase = new List<Item>();
20 
21     IEnumerator Start()
22     {
23         
24         WWW getData = new WWW(url);
25         yield return getData;
26         
27         if (getData.error != null)
28         {
29             Debug.Log(getData.error);
30         }
31         else
32         {
33             Debug.Log(getData.text);
34         }
35         //把请求到的数据转换成 JsonData array 类型,并存储到itemdata里
36         itemdata = JsonMapper.ToObject(getData.text);
37         //Debug.Log(itemdata);
38         //调用 ConstructItemDatabase() 函数
39         ConstructItemDatabase();
40         //测试数据
41         Debug.Log(dataBase[0].Name);
42     }
43     void ConstructItemDatabase()
44     {
45         //循环取数据
46         for (int i = 0; i < itemdata.Count; i++)
47         {
48             //把每个数据都添加到 dataBase 里  要和请求到的json数据对应
49             dataBase.Add(new Item((int)itemdata[i]["longId"], (int)itemdata[i]["intId"], itemdata[i]["item"].ToString()));
50         }
51     }
52 }
53 
54 //新建Item类
55 public class Item
56 {
57     //定义Item内的数据
58     //固定写法 XX{ get; set; }
59     public int ID { get; set; }
60     public int IntId { get; set; }
61     public string Name { get; set; }
62 
63     //接收上面的变量
64     public Item(int _longId, int _intId, string _name)
65     {
66         ID = _longId;
67         IntId = _intId;
68         Name = _name;
69     }
70 }

 布林线图—————自定准绳

http://www.baidu.com?city=beijing&weather=?
尾部被称为诉求头 ?前边的黄金年代部分被称作恳求体
央求体由参数和参数值组成 多少个参数之间用&连接
<1>遵照接口划分:
若是接口是总体(包涵央浼头和央求体两局地卡塔尔
这种多少央求 我们就应用GET格局号召数据
GET格局呼吁数据特别轻巧 不过不安全
诉求数据的音讯都在接口的央求体地点裸揭穿来 所以不安全

LitJson.dll下载地址

1.首页(自行选购买股票页面卡塔 尔(阿拉伯语:قطر‎

假设接口残缺(只有乞求头 没有伏乞体卡塔尔
这种数据央求的办法 大家就使用POST方式诉求数据
POST格局乞求数据 相对来讲复杂一些 诉求体必要写代码手动拼接
POST央浼数据的不二秘技平日用来登入、注册、文件的上传
<2>遵照乞请数据的体制划分:

密码:1znp

    
每5秒要求二遍实时市价数据;每60秒需要一遍各类自行选购买股票的1分钟分时数据。离开该页面截至央求数据

联合诉求:

七个乞求对象向服务器必要数据 服务器会将多少个目的放在队列中
多少个对象开首央求数据 别的对象在队列中等待 假若第叁个目的央求数据停止今后第2个对象技巧起初伏乞数据 就算指标央浼数据甘休也要在队列中等待
等待全体指标全部呼吁数据变成 服务器才将具有目的诉求的数目报告给UI
全部客商体验非常糟糕 平日现身白屏获取卡顿 (也正是熏陶了UI主线程的劳作)

前风度翩翩段时间一向郁结unity连接数据库央浼数据,浪费了过多时刻。后来改用http诉求,顺遂获得多少,然后就早先于拆解解析数据,就有了那篇文章

      具体细则表明:

异步央求:

七个对象伏乞数据 也是将四个目的放在队列中 七个目的同时号令数据
何人先供给数据变成 就将数据上报给UI 不必要等待其余对象完毕多少诉求
iOS开拓中用到的数据诉求都以异步供给 异步央浼可以增加CPU的利用率
当真开拓卯月数量有关的正是底下的4步
1、数据央求
<1>系统类进行多少诉求NSUENCORELConnection
<2>第三方库ASIHTTPRequest (过时卡塔尔国
<3>第三方库AFNetworking (盛行)
<4>系统类NSU大切诺基LSession (对NSUEnclaveLConnection的三遍封装卡塔尔国
2、将倡议下来的数据开展剖析
JSON (系统类 NSJSONSerialization)
XML (系统类 NSXMLParser 第三方库GData)
3、将解析好的多寡显示在UI上
4、将UI上的数量实行长久性存款和储蓄
NSFileHandle PList/userdefaults 归档 数据库 CoreData
NSURLConnection
张开数量必要 只好做单义务异步哀告
将三个号召任务分给五个线程 三个线程同有时间工作 互不压抑三个线程只好做到当前任务的一片段 独有全部线程全部完事 整个义务才算驾鹤归西
使用NSURLConnection进行多少异步要求必要当前类据守左券NSUQX56LConnectionDataDelegate

AFNetworking
AFNetWorking 进行数量央浼 不只能伏乞json数据也能央浼xml数据
相同的时候代有三种多少的全自动解析
AFNetWorking对NSJSONSerialization和NSXMLParser举办了一遍封装

互联网央浼数据(二种样式)
形式一:GET方法
方法一:
NSU揽胜LConnection:(须要当前类服从左券NSULacrosseLConnectionDataDelegate)
<1>将字符串网站转形成NSUGL450L
NSURL * url = [NSURL URLWithString:PATH];
<2>将NSULANDL封装成央浼对象
NSURLRequest * request = [NSURLRequest requestWithURL:url];
<3>开首异步供给
[NSURLConnection connectionWithRequest:request delegate:self];
合计方式
服务器端选用客户端的新闻报告
-(void)connection:(NSURLConnection *)connection
didReceiveResponse:(NSURLResponse *)response;
开班央求数据
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData
*)data
种种线程供给完数据现在就能调用该方法 将倡议下来的多少开展拼接
[myData appendData:data];
伸手数据停止
-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
始于深入分析数据
NSDictionary * dic = [NSJSONSerialization JSONObjectWithData:myData
options:NSJSONReadingMutableContainers error:nil];
NSArray * array = dic[@”users”];
[dataSource addObjectsFromArray:array];
//数据源发生转移 刷新表格
[table reloadData];
}
方法二 AFNetWorking
<1>创立乞请操作管理者对象
AFHTTPRequestOperationManager * manager =
[AFHTTPRequestOperationManager manager];
<2>设置哀求的数据类型(是json照旧xml卡塔尔国
manager.responseSerializer.acceptableContentTypes = [NSSet
setWithObject:@”application/json”];
<3>最早数据哀告并解析
1、诉求数据的接口
2、请求体
3、诉求数据成功、数据分析也完了了
[manager GET:<#(NSString *)#> parameters:<#(id)#>
success:<#^(AFHTTPRequestOperation *operation, id
responseObject)success#> failure:<#^(AFHTTPRequestOperation
*operation, NSError *error)failure#>]

AFNetworking能够拓宽多义务异步央浼
二个分界面央浼数据的接口有两个
万生龙活虎供给一个接口的数据 将要有八个伸手对象
此地需求创设多少个央浼对象 对象之间诉求数据是异步的 互不震惊
将八个对象放在队列中 举行异步央浼
抱有图片的接口信息
NSArray * array = @[]具备接口消息
概念多少个数组 承载八个哀告对象
NSMutableArray * requestArr = [[NSMutableArray alloc]init];
for(int i = 0;i<4;i++)
{
//<1>将接口转造成NSU景逸SUVL
NSURL * url = [NSURL URLWithString:array[i]];
//<2>将NSUEnclaveL封装成央求对象
NSURLRequest * request = [NSURLRequest requestWithURL:url];
//<3>将NSU奥迪TT RSLRequest对象封装成AF中的央浼操作对象
AFHTTPRequestOperation * operation = [[AFHTTPRequestOperation
alloc]initWithRequest:request];
//<4>将央浼下来的数码显示在UI上
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation
*operation, id responseObject) {
//【注意】对象央求数据 内部是同步举行数据央求的
UIImage * image = [UIImage imageWithData:responseObject];
UIImageView * imageView = (UIImageView *)[self.view viewWithTag:i +
1];
imageView.image = image;
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@”%@”,error.description);
}];
[requestArr addObject:operation];
}
创设队列对象
NSOperationQueue * queue = [[NSOperationQueue alloc]init];
安装队列中雷同时刻央求数据的对象个数
queue.maxConcurrentOperationCount = 4;
将全数央浼对象放在队列中
[queue addOperations:requestArr waitUntilFinished:NO];
款式二:POST方法(POST央浼 平时用来登陆、注册、文件上传等操作)
方法一:
NSU奥德赛LConnection:(需求当前类服从左券NSUSportageLConnectionDataDelegate完结合同中必得实现的四个措施)
<1>将字符串网址转产生NSU奇骏L
NSURL * url = [NSURL URLWithString:PATH];
<2>封装诉求对象
[注意]GET乞求 封装的伸手对象类型为NSU巴博斯 SL级LRequest

POST需要 封装的央求对象类型为NSMutableULacrosseLRequest
NSMutableURLRequest * request = [NSMutableURLRequest
requestWithURL:url];
<3>设置央求方式
暗中认可央求的章程是GET须要
[request setHTTPMethod:@”Post”]
<4>设置央求的体制
日前的乞求体样式 参数名=参数值&参数名=参数值…
[request setValue:@”application/x-www-form-urlencoded”
forHTTPHeaderField:@”Content-Type”];
<5>拼接央求体
NSString * bodyStr = [NSString
stringWithFormat:@”username=%@&password=%@&email=%@”,self.nameTextField.text,self.pswTextField.text,self.emailTextField.text];
<6>设置诉求体的尺寸
[注意]设置央浼体的长度 设置的是呼吁体字符串对应的NSData的尺寸
NSData * bodyData = [bodyStr
dataUsingEncoding:NSUTF8StringEncoding];
[request setValue:[NSString
stringWithFormat:@”%d”,(int)bodyData.length]
forHTTPHeaderField:@”Content-Length”];
<7>将央浼体拼接到央求头前面
[request setHTTPBody:bodyData];
<8>开端需要数据
[NSURLConnection connectionWithRequest:request delegate:self];
方法二 AFNetWorking
//<1>创造央求操作管理这对象
AFHTTPRequestOperationManager * manager =
[AFHTTPRequestOperationManager manager];
<2>设置选拔的数据类型
manager.responseSerializer.acceptableContentTypes = [NSSet
setWithObject:@”text/html”];
<3>拼接诉求体
AFNetworking实行post诉求 央求体拼接使用字典封装
字典的键为接口文书档案中的参数名 字典中的值为参数值
NSDictionary * dic =
@{@”username”:self.nameTextField.text,@”password”:self.pswTextField.text};
<4>初阶央求数据并解析
[manager POST:LOGINPATH parameters:dic success:^(AFHTTPRequestOperation
* _Nonnull operation, id _Nonnull responseObject)
{
NSString * message = responseObject[@”message”];
NSString * code = responseObject[@”code”];
} failure:^(AFHTTPRequestOperation * _Nonnull operation, NSError *
_Nonnull error) {
NSLog(@”%@”,error.description);
}];

万豆蔻梢头我们看不懂,这里有三个视频讲的照旧分外详细的

    
(1卡塔尔国实时市场价格:只要客商在该页面,不分白天晚间,开盘收盘,每5秒诉求三次;离开该页面,乞求截至;每收到实时市价补偿到分时小图中

     
(2卡塔尔分时小图:竞价排名和连接撮合时期,每60秒诉求三次;此外时间,若本地无分时数据,供给一遍,若有,不诉求分时数据;

  2.个人股页(证券详细的情况页卡塔尔国

       客户停留该页面时,每5秒必要二遍实时行情数据;离开该页面结束恳求

      
(1卡塔尔若页面呈现分时图,每60秒伏乞当日分时数据,每5秒央求该期货(Futures卡塔尔国当日最后五组分时数据;离开该页面甘休诉求

       
(2卡塔尔国若页面显示日K图,每60秒供给该股票(stock卡塔 尔(英语:State of Qatar)的日K数据;离开该页面停止乞请

      具体细则表达:

      
(1卡塔尔实时长势:只要客户在该页面,不分白天晚上,开盘收盘,每5秒诉求实时长势;离开该页面,伏乞截至

      
(2卡塔尔分时图:竞价排行和连接撮合时期,每60秒乞求一回当日分时数据,每5秒须求三回当日分时的末尾五组数据;别的时间,若本地无分时数据,央浼一遍;若有,不央求分时数据;

      
(3卡塔尔日K图:竞价排行和连接撮合时期,每60秒央浼一回日K数据,每5秒判断实时市场价格和日K最后风流罗曼蒂克组数据的最大十分小值进行补充;其余时间,若本地无日K数据,央求叁遍;若有,不央求日K数据;

  3.股友动态页

      
客商停留在该页面时,每5秒央浼一回实时市场价格;每60秒央求一次该期货(Futures卡塔尔的分时数据;离开该页面,结束央求

具体细则表达:

       
(1)实时增势:只要客商在该页面,不分白天晚间,开盘收盘,每5秒需要一回实时涨势;每间距5秒补偿到分时小图中。离开该页面,央浼截至

      
(2卡塔尔分时小图:竞价排行和接二连三撮合时期,每60秒央求二次,此外时间,若本地无分时数据请求三次,若有,不央浼分时数据;离开该页面,伏乞甘休。

4.横屏页

      客户在该页面时,每5秒央浼二回实时行情,其它:

    (1卡塔 尔(英语:State of Qatar)分时数据
每60秒哀告叁次当日分时数据,每间距5秒乞求叁遍当日分时最终五组数据

    (2卡塔 尔(英语:State of Qatar)5日分时每60秒哀告贰回

   
(3卡塔 尔(阿拉伯语:قطر‎竞价排行和连接撮合期,日K,周K,月K每60秒央浼贰回,别的时间,若本地无分时数据央浼一次,若有,不诉求;

    具体细则表达:

      (1卡塔尔实时市价只要停留在该页面总会不停刷新;

     
(2卡塔尔五档数据包蕴在实时增势数据中,没有要求其它央求,每5秒和实时涨势一起刷新分界面

  
(3卡塔尔顾客切换(分时,5日分时,日K,周K,月K卡塔 尔(英语:State of Qatar)到该项才运营该项网络央浼;比如顾客切换成日K,别的种类需要结束(分时,5日分时,周K,月K卡塔 尔(阿拉伯语:قطر‎,日K央求运营

相关文章