IOS開發 網路詳解(三)--- Http請求報文和響應報文(Get和Post)

來源:互聯網
上載者:User

標籤:win   5.0   val   才有   das   height   http請求   handle   要求方法   

HTTP請求報文由請求行,要求標頭,空格和請求資料構成。

 

1.請求行由要求方法 空格 請求url 空格 版本 組成

2.要求標頭由關鍵字/值組成

  常用的由user-Agent:瀏覽器類型

                accept:用戶端能識別的類型列表

                host:主機名稱

3.空格:區分不同的部分

4.只用post才有:最常對應的要求標頭尾content-length,content-type

5.get請求執行個體

//請求首行GET /hello/index.jsp HTTP/1.1//要求標頭資訊,因為GET請求沒有本文Host: localhostUser-Agent: Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: zh-cn,zh;q=0.5Accept-Encoding: gzip, deflateAccept-Charset: GB2312,utf-8;q=0.7,*;q=0.7Connection: keep-aliveCookie: JSESSIONID=369766FDF6220F7803433C0B2DE36D98//空行//因為GET沒有本文,所以下面為空白

6.post請求執行個體

// 請求首行POST /hello/index.jsp HTTP/1.1//要求標頭資訊Host: localhostUser-Agent: Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: zh-cn,zh;q=0.5Accept-Encoding: gzip, deflateAccept-Charset: GB2312,utf-8;q=0.7,*;q=0.7Connection: keep-aliveReferer: http://localhost/hello/index.jspCookie: JSESSIONID=369766FDF6220F7803433C0B2DE36D98Content-Type: application/x-www-form-urlencoded Content-Length: 14 // 這裡是空行//POST有請求本文username=hello

 7.URLConnection實現檔案上傳(注意要求標頭)

好了先看看這個圖,上傳檔案和普通的POST請求不一樣,它多了一些這個,然而這裡就有是需要我們拼接的內容,分兩部分上面的Content-Type是在我們的要求標頭裡面的下面的那些寫紅色字的就是我們所請求 需要拼接的至於換多少行,我也一一的拼接出來了,你們拼接的話可以跟著下面的圖一步一步拼接.



//1、確定URL    NSURL *url = [NSURL URLWithString:@"http://192.168.1.0:8080/upload"];    //2、確定請求    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];    /******************************************************************/    //                          佈建要求頭    [request setValue:@"multipart/form-data; boundary=----WebKitFormBoundaryUFNaH6losNxu4xDq" forHTTPHeaderField:@"Content-Type"];    /******************************************************************/    //                          佈建要求體    // 佈建要求體    // 給請求體加入固定格式資料  這裡也是使用的也是可變的,因為多嘛    NSMutableData *data = [NSMutableData data];    /******************************************************************/    //                       開始標記    [data appendData:[@"------WebKitFormBoundaryUFNaH6losNxu4xDq" dataUsingEncoding:NSUTF8StringEncoding]];    [data appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];    [data appendData:[@"Content-Disposition: form-data; name=\"file\"; filename=\"Liiii.png\"" dataUsingEncoding:NSUTF8StringEncoding]];    [data appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];    [data appendData:[@"Content-Type: image/png" dataUsingEncoding:NSUTF8StringEncoding]];    [data appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];    [data appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];    /******************************************************************/    //                      上傳檔案參數    //圖片資料  並且轉換為Data    UIImage *image = [UIImage imageNamed:@"Liiii"];    NSData *imagedata = UIImagePNGRepresentation(image);    [data appendData:imagedata];    [data appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];    [data appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];    /******************************************************************/    //                       非檔案參數    [data appendData:[@"------WebKitFormBoundaryUFNaH6losNxu4xDq" dataUsingEncoding:NSUTF8StringEncoding]];    [data appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];    [data appendData:[@"Content-Disposition: form-data; name=\"username\"" dataUsingEncoding:NSUTF8StringEncoding]];    [data appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];    [data appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];    [data appendData:[@"LitterL" dataUsingEncoding:NSUTF8StringEncoding]];    [data appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];    /******************************************************************/    //                      添加結束標記    [data appendData:[@"------WebKitFormBoundaryUFNaH6losNxu4xDq--" dataUsingEncoding:NSUTF8StringEncoding]];    [data appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];    /******************************************************************/    //請求方式    request.HTTPMethod = @"POST";    //請求體    request.HTTPBody = data;    //3、發送請求    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {        NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);    }];

 

IOS開發 網路詳解(三)--- Http請求報文和響應報文(Get和Post)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.