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


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: localhost
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Cookie: JSESSIONID=369766FDF6220F7803433C0B2DE36D98
//空行
//因為GET沒有正文,所以下面為空

6.post請求實例

// 請求首行
POST /hello/index.jsp HTTP/1.1
//請求頭信息
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Referer: http://localhost/hello/index.jsp
Cookie: JSESSIONID=369766FDF6220F7803433C0B2DE36D98
Content-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]);
    }];

 
        

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM