導航:首頁 > 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伺服器相關的知識