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 }

 K线图—————自定规则

http://www.baidu.com?city=beijing&weather=?
前边部分被叫做请求头 ?后边的部分被叫做请求体
请求体由参数和参数值组成 三个参数之间用&连接
<1>依据接口划分:
只要接口是总体(蕴涵请求头和请求体两某些)
那种数据请求 大家就接纳GET格局呼吁数据
GET形式呼吁数据卓殊简单 可是不安全
请求数据的消息都在接口的请求体地点裸表露来 所以不安全

AJAX跨域请求数据的四种格局(实例讲解),ajax实例讲解

出于浏览器的同源策略 ajax请求不能收到到请求响应回来的数据 

恳请数据需求调用浏览器的停放构造函数 XMLHttpRequest() 进行 实例对象

var xhr = new XMLHttpRequest();

瞩目点 在IE8此前协理的 ActiveXobject(“Microsoft.XMLHTTP”); 
记住要举行包容处理啊  在此间作者就不写了

经过该目的开始展览获取

获取数据的多种状态 
xhr.readyState 该属性保存着央浼数据的二种情景

1.xhr.open(请求格局,请求地址,设置同/异步);

2.xhr.send(null);//发送请求  倘若是post请求
那么参数需求在send中开始展览传递

3.会一贯检查和测试数据是或不是重回

4.数量再次来到 那么xhr.readyState的值是4 
表明数据重返成功

那就是说大家需求实行跨域请求什么做吗

方案一:

动用script标签的src属性请求数据  src属性请求的数码浏览器是不会展开拦截的

<script srrc=”;

如此那般我们是能够请求到数码的  但是这么有局地瑕疵

1.我们十分小概控制曾几何时发送请求的  页面加载到此地就是出殡和埋葬请求的

2.如此的法门  请求格局是二只的呼吁 要求请求到数量才会实施下一步的代码 
那样页面加载时间只怕延伸

3.所以提出并非接纳那样的方法 不引进

方案二:

在js中动态创造script标签 钦点请求的接口

var script = document.createELement(“script”);

//将script追加到head标签中

呼吁json数据解析,ajax实例讲解。document.getElementsTagName(“head”)[0].appendChild(script);

可取:我们能够控制请求的火候  并且那样请求的章程是异步的
不会延长页面加载的大运

首要点:我们得以在乞请数据中调用请求页面中的函数 
使用函数的形参接收请求回来的数码

方案三:

在呼吁的后端接口设置一个 请求头即可

Access-Control-Allow-Origin

涵盖那一个请求头 前端页面跨域请求的数量就不会被浏览器进行阻挠啦

方案四:

运用<iframe>标签 将八个页面 将得以可变的内容部分放置在该标签中 
发送请求就会开始展览刷新啦  严俊意义上不算ajax啦 

该办法在ajax未出现  就是选拔该标签达成请求数据的

以上那篇AJAX跨域请求数据的八种格局(实例讲解)便是笔者分享给我们的全部内容了,希望能给大家八个参考,也可望大家多多协理帮客之家。

由于浏览器的同源策略 ajax请求不得以接受到请求响应回来的数目
请求数据须要调用…

LitJson.dll下载地址

1.首页(自行选购买股票页面)

要是接口不完全(唯有请求头 没有请求体)
那种多少请求的点子 大家就选用POST方式请求数据
POST情势请求数据 相对来说复杂一些 请求体必要写代码手动拼接
POST请求数据的不二法门平日用来登录、注册、文件的上传
<2>遵照请求数据的体制划分:

密码:1znp

    
每5秒请求二遍实时市价数据;每60秒请求一遍每一个自行选购买股票的1分钟分时数据。离开该页面甘休请求数据

同台请求:

多少个请求对象向服务器请求数据 服务器会将八个指标放在队列中
三个对象开端请求数据 其余对象在队列中等待 如若第①个目标请求数据停止现在第一个对象才能开始请求数据 就算目的请求数据截至也要在队列中等待
等待全部指标全体伸手数据形成 服务器才将兼具目的请求的数额报告给UI
全数用户体验11分不好 平日出现白屏获取卡顿 (也正是熏陶了UI主线程的干活)

前一段时间平素纠结unity连接数据库请求数据,浪费了累累光阴。后来改用http请求,顺遂得到多少,然后就先河于解析数据,就有了这篇小说

      具体细则表达:

异步请求:

八个指标请求数据 也是将多少个目的放在队列中 多个对象同时请求数据
何人先请求数据形成 就将数据上报给UI 无需等待其余对象完毕多少请求
iOS开发中用到的数目请求都以异步请求 异步请求能够进步CPU的利用率
诚然开发竹秋数据有关的正是下面的4步
壹 、数据请求
<1>系统类进行数据请求NSUHavalLConnection
<2>第③方库ASIHTTPRequest (过时)
<3>第叁方库AFNetworking (盛行)
<4>系统类NSU宝马X5LSession (对NSU昂科拉LConnection的2回封装)
二 、将请求下来的数据举办辨析
JSON (系统类 NSJSONSerialization)
XML (系统类 NSXMLParser 第1方库GData)
三 、将分析好的多少体未来UI上
肆 、将UI上的数量举行持久性存款和储蓄
NSFileHandle PList/userdefaults 归档 数据库 CoreData
NSURLConnection
拓展多少请求 只可以做单任务异步请求
将三个呼吁职责分给多个线程 五个线程同时工作 互不干扰2个线程只可以做到当前任务的一片段 唯有全体线程整体达成 整个职务才算了却
选用NSU途观LConnection进行多少异步请求
须求当前类服从协议NSU奥迪Q7LConnectionDataDelegate

AFNetworking
AFNetWorking 实行数据请求 不仅能请求json数据也能请求xml数据
同时期有三种多少的自动分析
AFNetWorking对NSJSONSerialization和NSXMLParser进行了一回封装

互连网请求数据(三种格局)
形式一:GET方法
方法一:
NSUCR-VLConnection:(供给当前类服从协议NSU智跑LConnectionDataDelegate)
<1>将字符串网址转化成NSU奥迪Q5L
NSURL * url = [NSURL URLWithString:PATH];
<2>将NSU翼虎L封装成请求对象
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>早先数据请求并分析
一 、请求数据的接口
2、请求体
叁 、请求数据成功、数据解析也做到了
[manager GET:<#(NSString *)#> parameters:<#(id)#>
success:<#^(AFHTTPRequestOperation *operation, id
responseObject)success#> failure:<#^(AFHTTPRequestOperation
*operation, NSError *error)failure#>]

AFNetworking能够展开多职分异步请求
一个界面请求数据的接口有多个
只要请求3个接口的数据 就要有3个伸手对象
此间要求创建多个请求对象 对象时期请求数据是异步的 互不惊扰
将多个目的放在队列中 实行异步请求
具有图片的接口音信
NSArray * array = @[]富有接口音信
概念一个数组 承载八个请求对象
NSMutableArray * requestArr = [[NSMutableArray alloc]init];
for(int i = 0;i<4;i++)
{
//<1>将接口转化成NSUCRUISERL
NSURL * url = [NSURL URLWithString:array[i]];
//<2>将NSU奥迪Q5L封装成请求对象
NSURLRequest *金沙注册送58, request = [NSURLRequest requestWithURL:url];
//<3>将NSUENVISIONLRequest对象封装成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请求 平日用来登录、注册、文件上传等操作)
方法一:
NSUPRADOLConnection:(须要当前类遵循协议NSU智跑LConnectionDataDelegate实现协议中必须贯彻的三个章程)
<1>将字符串网址转化成NSUPRADOL
NSURL * url = [NSURL URLWithString:PATH];
<2>封装请求对象
[注意]GET请求 封装的乞请对象类型为NSUENVISIONLRequest

POST请求 封装的呼吁对象类型为NSMutableUCRUISERLRequest
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秒请求3次;离开该页面,请求截止;每收到实时行情补偿到分时小图中

     
(2)分时小图:竞价排行和连接撮合期间,每60秒请求3回;其余时间,若本地无分时数据,请求二回,若有,不请求分时数据;

  2.个股页(股票详情页)

       用户停留该页面时,每5秒请求贰回实时市价数据;离开该页面甘休请求

      
(1)若页面呈现分时图,每60秒请求当日分时数据,每5秒请求该股票当日最终五组分时数据;离开该页面甘休请求

       
(2)若页面展现日K图,每60秒请求该股票的日K数据;离开该页面停止请求

      具体细则表达:

      
(1)实时物价指数:只要用户在该页面,不分白天夜间,开盘收盘,每5秒请求实时市价;离开该页面,请求结束

      
(2)分时图:竞价排行和接二连三撮合时期,每60秒请求二回当日分时数据,每5秒请求2遍当日分时的尾声五组数据;别的时间,若本地无分时数据,请求3次;若有,不请求分时数据;

      
(3)日K图:竞价排名和连接撮合时期,每60秒请求3遍日K数据,每5秒判断实时市价和日K最终一组数据的最大十分小值实行补充;别的时间,若本地无日K数据,请求三回;若有,不请求日K数据;

  3.股友动态页

      
用户停留在该页面时,每5秒请求一回实时市场价格;每60秒请求一遍该股票的分时数据;离开该页面,结束请求

具体细则表达:

       
(1)实时市场价格:只要用户在该页面,不分白天夜晚,开盘收盘,每5秒请求一遍实时市价;每隔5秒补偿到分时小图中。离开该页面,请求截止

      
(2)分时小图:竞价排行和连接撮合时期,每60秒请求3回,其余时间,若本地无分时数据请求1次,若有,不请求分时数据;离开该页面,请求截至。

4.横屏页

      用户在该页面时,每5秒请求3遍实时市场价格,别的:

    (1)分时数据
每60秒请求一次当日分时数据,每隔5秒请求二次当日分时最终五组数据

    (2)二日分时每60秒请求三回

   
(3)竞价排行和三番五次撮合期,日K,周K,月K每60秒请求1遍,别的时间,若本地无分时数据请求1回,若有,不请求;

    具体细则表达:

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

     
(2)五档数据包罗在实时市价数据中,不必要其余请求,每5秒和实时市场价格一起刷新界面

  
(3)用户切换(分时,13日分时,日K,周K,月K)到该项才起步该项互联网请求;比如用户切换成日K,别的项目请求甘休(分时,八日分时,周K,月K),日K请求运转

相关文章

网站地图xml地图