导航:首页 > IDC知识 > ioshttp服务器

ioshttp服务器

发布时间:2021-01-03 21:05:03

1、iOS下怎么得到HTTP请求建立连接的时间

 HTTP协议:简单对象访问协议,对应于应用层 ,HTTP协议是基于TCP连接的tcp协议: 对应于传输版层权ip协议: 对应于网络层TCP/IP是传输层协议,主要解决数据如何在网络中传输;而HTTP是应用层协议,主要解决如何包装数据。Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。http连接:http连接就是所谓的短连接,即客户端向服务器端发送一次请求,服务器端响应后连接即会断掉;socket连接:socket连接就是所谓的长连接,理论上客户端和服务器端一旦建立起连接将不会主动断掉;但是由于各种环境因素可能会是连接断开,比如说:服务器端或客户端主机down了,网络故障,或者两者之间长时间没有数据传输,网络防火墙可能会断开该连接以释放网络资源。所以当一个socket连接中没有数据的传输,那么为了维持连接需要发送心跳消息~~具体心跳消息格式是开发者自己定义的

2、ios如何实现http协议数据流上传

ios应用中HTTP上传请求协议,用HTTP协议做web上传,这里需要自定义HTTP协议。

HTTP协议应该注意四点:

1、初始化响应服务器地址

NSURL *url = [NSURL URLWithString:@"http://xxx.xxx.xx.xxx/mqupload.jsp"];
[urlRequest setValue: [NSString stringWithFormat:@"%@\r\n", @"http://XXXXXX HTTP/1.1"]]; //可要可无
2、设置提交方法 GET/POST

[urlRequest setHTTPMethod:@"POST"];
3、设置响应内容类型

[urlRequest setValue: [NSString stringWithFormat:@"multipart/form-data;
boundary=---------%@", @"7daaba1e0368"] forHTTPHeaderField:@"Content-Type"];
4、设置响应内容

NSMutableData *postData = [NSMutableData dataWithCapacity:[m_imageData length]];
[postData appendData: [[NSString stringWithFormat:@"---------%@\r\n", @"7daaba1e0368"]
dataUsingEncoding:NSUTF8StringEncoding]];//开始标志

[postData appendData: [[NSString stringWithFormat: @"Content-Disposition:form-data; name="File1";
filename="1.jpg"\r\n Content-type: image/pjpeg\r\n\r\n"]dataUsingEncoding:NSUTF8StringEncoding]];//name是页面文件的参数,type是文件类型
[postData appendData:imageData];// 文件数据
[postData appendData: [[NSString stringWithFormat:@"\r\n---------%@--\r\n", @"7daaba1e0368"]
dataUsingEncoding:NSUTF8StringEncoding]];// 文件结束标志
[urlRequest setHTTPBody:postData];//把数据加载到响应的文件体
只要做到以上几点,一个完整的http请求协议就做好了。

下面附一个简洁版完整的请求协议体

NSURL *url = [NSURL URLWithString:@"http://XX.XX.XX"];//请求服务器路径。
m_imageData = UIImagePNGRepresentation(myImageView.image);
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:url];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setValue: [NSString stringWithFormat:@"multipart/form-data; boundary=---------%@",
@"7daaba1e0368"] forHTTPHeaderField:@"Content-Type"];
[urlRequest setValue: [NSString stringWithFormat:@"%@\r\n\r\n",
@" keep-alive"] forHTTPHeaderField:@"Connection"];
NSMutableData *postData = [NSMutableData dataWithCapacity:[m_imageData length]];
[postData appendData: [[NSString stringWithFormat:@"---------%@\r\n",
@"7daaba1e0368"] dataUsingEncoding:NSUTF8StringEncoding]];

[postData appendData: [[NSString stringWithFormat:
@"Content-Disposition:form-data; name="File1"; filename="1.jpg"\r\n Content-type:
image/pjpeg\r\n\r\n"]dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:m_imageData];
[postData appendData: [[NSString stringWithFormat:@"\r\n---------%@--\r\n", @"7daaba1e0368"]
dataUsingEncoding:NSUTF8StringEncoding]];
[urlRequest setHTTPBody:postData];
NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self];

3、ios http都设置哪些header

1、让类实现这两个接口:
NSURLConnectionDelegate,NSURLConnectionDataDelegate
2、实现接口对应的方法:
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
NSInteger code=[(NSHTTPURLResponse*)response statusCode];
NSLog(@"didReceiveResponse....code=%d",code);
}
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
NSLog(@"didFailWithError...%@",[error description]);
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
NSLog(@"connectionDidFinishLoading....");

}
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
NSString *str=[[NSString alloc]initWithData:data encoding:NSASCIIStringEncoding];
NSLog(@"didReceiveData....data=%@",str);

}
3、设置NSMutableURLRequest和发起请求:
NSString *strUrl=[NSString stringWithFormat:@" 你的地址"];
NSURL *url=[NSURL URLWithString:strUrl];
NSMutableURLRequest *request=[[NSMutableURLRequest alloc]initWithURL:url cachePolicy: timeoutInterval:20];
[request setHTTPMethod:@"GET"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"字段对应的值1" forHTTPHeaderField:@"你头部的字段1"];
[request setValue:@"字段对应的值2" forHTTPHeaderField:@"你头部的字段2"];
mConn=[[NSURLConnection alloc]initWithRequest:request delegate:self startImmediately:true];
[mConn start];

4、IOS http请求的get 和 post的请求的区别

Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求;

Get是获取信息,而不是修改信息,类似数据库查询功能一样,数据不会被修改;

Get请求的参数会跟在url后进行传递,请求的数据会附在URL之后,以?分割URL和传输数据,参数之间以&相连,%XX中的XX为该符号以16进制表示的ASCII,如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密。

Get传输的数据有大小限制,因为GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系了,不同的浏览器对URL的长度的限制是不同的。

GET请求的数据会被浏览器缓存起来,用户名和密码将明文出现在URL上,其他人可以查到历史浏览记录,数据不太安全。在服务器端,用Request.QueryString来获取Get方式提交来的数据。

Post请求则作为http消息的实际内容发送给web服务器,数据放置在HTML Header内提交,Post没有限制提交的数据。Post比Get安全,当数据是中文或者不敏感的数据,则用get,因为使用get,参数会显示在地址,对于敏感数据和不是中文字符的数据,则用post。

POST表示可能修改变服务器上的资源的请求,在服务器端,用Post方式提交的数据只能用Request.Form来获取。

5、iOS下怎么得到HTTP请求建立连接的时间

HTTP协议:简单对copy象访问协议,对应于应用层 ,HTTP协议是基于TCP连接的

tcp协议: 对应于传输层

ip协议: 对应于网络层

TCP/IP是传输层协议,主要解决数据如何在网络中传输;而HTTP是应用层协议,主要解决如何包装数据。

Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。

http连接:http连接就是所谓的短连接,即客户端向服务器端发送一次请求,服务器端响应后连接即会断掉;

socket连接:socket连接就是所谓的长连接,理论上客户端和服务器端一旦建立起连接将不会主动断掉;但是由于各种环境因素可能会是连接断开,比如说:服务器端或客户端主机down了,网络故障,或者两者之间长时间没有数据传输,网络防火墙可能会断开该连接以释放网络资源。所以当一个socket连接中没有数据的传输,那么为了维持连接需要发送心跳消息~~具体心跳消息格式是开发者自己定义的

6、IOS http请求的get 和 post的请求的区别

从表面的意思看get 和 post的区别get就是获取数据,post就是发送数据。这个是误区。其实两者都可以的,在IOS向服务器发送请求里面可以带参数。
那么这些误区是怎么出现的呢?先看看一下对http的解释
一般在浏览器中输入网址访问资源都是通过GET方式;在FORM提交中,可以通过Method指定提交方式为GET或者POST,默认为GET提交
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE
URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查 ,改 ,增 ,删 4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询 资源信息,而POST一般用于更新 资源信息(个人认为这是GET和POST的本质区别,也是协议设计者的本意,其它区别都是具体表现形式的差异 )。
再进一步了解下他们两个的区别:
1. GET使用URL或Cookie传参。而POST将数据放在BODY中。
2. GET的URL会有长度上的限制,则POST的数据则可以非常大。
3. POST比GET安全,因为数据在地址栏上不可见。
这些也是有点误区的,就像同步请求一定的慢吗?
GET和POST与数据如何传递没有关系?

GET和POST是由HTTP协议定义的。在HTTP协议中,Method和Data(URL, Body, Header)是正交的两个概念,也就是说,使用哪个Method与应用层的数据如何传输是没有相互关系的。
HTTP没有要求,如果Method是POST数据就要放在BODY中。也没有要求,如果Method是GET,数据(参数)就一定要放在URL中而不能放在BODY中。
那么,网上流传甚广的这个说法是从何而来的呢?我在HTML标准中,找到了相似的描述。这和网上流传的说法一致。但是这只是HTML标准对HTTP协议的用法的约定。怎么能当成GET和POST的区别呢?
而且,现代的Web Server都是支持GET中包含BODY这样的请求。虽然这种请求不可能从浏览器发出,但是现在的Web Server又不是只给浏览器用,已经完全地超出了HTML服务器的范畴了。
HTTP协议对GET和POST都没有对长度的限制?
HTTP协议明确地指出了,HTTP头和Body都没有长度的要求。而对于URL长度上的限制,有两方面的原因造成:
1. 浏览器。据说早期的浏览器会对URL长度做限制。据说IE对URL长度会限制在2048个字符内(流传很广,而且无数同事都表示认同)。但我自己试了一下,我构造了90K的URL通过IE9访问live.com,是正常的。网上的东西,哪怕是Wikipedia上的,也不能信。
2. 服务器。URL长了,对服务器处理也是一种负担。原本一个会话就没有多少数据,现在如果有人恶意地构造几个几M大小的URL,并不停地访问你的服务器。服务器的最大并发数显然会下降。另一种攻击方式是,把告诉服务器Content-Length是一个很大的数,然后只给服务器发一点儿数据,嘿嘿,服务器你就傻等着去吧。哪怕你有超时设置,这种故意的次次访问超时也能让服务器吃不了兜着走。有鉴于此,多数服务器出于安全啦、稳定啦方面的考虑,会给URL长度加限制。但是这个限制是针对所有HTTP请求的,与GET、POST没有关系。
这个貌似听着对点吧。
3.对于安全不安全讲。
get:
.所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET请求一般不应产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。
* 注意:这里安全的含义仅仅是指是非修改信息。

POST的安全性要比GET的安全性高。注意:这里所说的安全性和上面GET提到的“安全”不是同个概念。上面“安全”的含义仅仅是不作数据修改,而这里安全的含义是真正的Security的含义,比如:通过GET提交数据,用户名和密码将明文出现在URL上,因为(1)登录页面有可能被浏览器缓存, (2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击 .

7、IOS http请求的get 和 post的请求的区别

相同点; Get与post(对于“post”除非相应里有cache-control或者expires头域指示其相应不可缓存)请求的相应是可缓存的;
不同点:
1. Get是从服务器上获取数据,post是向服务器传送数据
2. Get是把参数数据队列加到提交表单的action属性所指定的URL中,值和表单中各个字段一一对应,在URL中可以看到,post是通过HTTP post机制,将表单内各个字段与其内容放置在html header内一起传送到action属性所指的URL地址,用户看不到这个过程;
3. get传送的数据量较小,不能大于2kb;post传送的数据量较大,一般被默认为不受限制的。但理论上,IIS4中最大量为80kb,IIs5中为100kb;
4. get安全性非常低;post安全性较高;
5. get适用于多请求,而保留post仅用于更新站点;
6. 在form提交的时候,如果不指定method,则默认为get请求,form中提交的数据将会附加在url之后,以?与URL分开。字母数字字符原样发送,但空格转换为“+”号,其它符号转换为%xx,其中xx为该符号为16进制表示的ASCII(或ISO Latin-1)值;
7. get请求提交的数据放置在HTTP请求协议头中,而post提交的数据则放在实体数据数据中;

8、ios http和https的区别

HTTP:

NSString *urlString =[NSString stringWithFormat:@"https://127.0.0.1/default.aspx?USER=%@",@"111"];

NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];

[request setURL:[NSURL URLWithString:urlString]];

[request setHTTPMethod:@"GET"];

NSHTTPURLResponse* urlResponse = nil;

NSError *error = [[NSError alloc] init];

NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];

NSMutableString *result = [[NSMutableString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];

NSLog(@"The result string is :%@",result);

HTTPS

事件触发

{

NSString *urlString =[NSString stringWithFormat:@"https://127.0.0.1/default.aspx?USER=%@",@"111"];

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:urlString] cachePolicy: timeoutInterval:5];

//设置请求方式为get

[request setHTTPMethod:@"GET"];

//添加用户会话id

[request addValue:@"text/html" forHTTPHeaderField:@"Content-Type"];

//连接发送请求

finished = false;

NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];

//堵塞线程,等待结束

while(!finished) {

[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];

}

}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse*)response

{}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection

{

//[_waitingDialog dismissWithClickedButtonIndex:0 animated:NO];

[connection release];

}

-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error

{

}

- (BOOL):(NSURLConnection *)connection{

return NO;

}

//下面两段是重点,要服务器端单项HTTPS 验证,iOS 客户端忽略证书验证。

- (BOOL)connection:(NSURLConnection *)connection :(NSURLProtectionSpace *)protectionSpace {

return [protectionSpace.authenticationMethod isEqualToString:];

}

- (void)connection:(NSURLConnection *)connection :(NSURLAuthenticationChallenge *)challenge {

NSLog(@" %@ %zd", [[challenge protectionSpace] authenticationMethod], (ssize_t) [challenge previousFailureCount]);

if ([challenge.protectionSpace.authenticationMethod isEqualToString:]){

[[challenge sender] useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge];

[[challenge sender] : challenge];

}

}

NSLog(@"get the whole response");

//[receivedData setLength:0];

}

//处理数据

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data

{

}

9、如何使ios 访问http网页

下文来为各位整理一段php判断是android还是ios还是wp的访问网站例子,非常 的实用希望专对各位朋友会有所帮助属. 在php中可以用$_SERVER['HTTP_USER_AGENT']来区分是android、ios还是wp的请求,具体可以用以下代码来实现: $userAgent = $_SERVER['HTTP_USER_AGENT']; if (preg_match("/(iPodiPadiPhone)/", $userAgent)) { echo 'ios'; //IOS客户端 } elseif (preg_match("/WP/", $userAgent)) { echo 'wp'; //WinPhone客户端 } elseif (preg_match("/android/i", $userAgent)) { echo 'android'; //android客户端 } 当然我也可以在网页头部加上一段js代码效果是一样的 这样只要是手机访问网站就会自动到了手机版本网站了

10、ios http和https的区别

http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。http的连接很简单,是无状态的内,...

HTTPS协议是由SSL+HTTP协议构容建的可进行加密传输、身份认证的网络协议,要比http协议安全。

与ioshttp服务器相关的知识