2010-12-22 18 views
0

看來頭字段(即@「Content-Type」)的設置值不會取值,除非它是base64編碼的。該方法文檔說它需要一個普通的NSString,所以它真的不應該。但是,以這種方式對其進行編碼似乎會使提交請求的價值無用......對嗎? 見下圖:NSMutableURLRequest - 爲什麼不用普通的NSString設置標題值?

[req setHTTPBody:allData]; 
    [req setHTTPMethod:@"POST"]; 
    [req setValue:@"multipart/related; " 
     "boundary==_27da60ee13b84794c5873572c502aaae\n" forHTTPHeaderField:@"Content-Type"]; 

    NSLog(@"\n\n\t\t===headerField content-type===\n\n%@", [req valueForHTTPHeaderField:@"Content-Type"]); 

產量:

2010-12-22 09:53:23.008 uploadXMLText[96009:207] 

      ===headerField content-type=== 

(null) 

但是,如果我編碼字符串值@ 「多......」 爲base64:

產量:

2010-12-22 10:06:37.185 uploadXMLText[96234:207] 

      ===headerField content-type=== 

bXVsdGlwYXJ0L3JlbGF0ZWQ7IGJvdW5kYXJ5PT1fMjdkYTYwZWUxM2I4NDc5`* 

任何想法的人?

謝謝!

回答

0

擺脫這裏的新行:boundary==_27da60ee13b84794c5873572c502aaae\n。將其更改爲boundary==_27da60ee13b84794c5873572c502aaae。這可能是一種保護自己免於嘗試注入額外頭文件的方式。

+0

感謝喬納森,證明你是對的\ n(換行)問題,但在很多方面比你知道的。如果NSMutableURLRequest在任何地方都有換行符,它將不會添加頭,這就是爲什麼我的Authorization頭永遠不會(在末尾有一個隱藏的\ n)! – 2010-12-22 22:13:25

0

首先,感謝您的答案!

其次,所有的標題都在,請求正在發送,而且我實際上從服務器獲得了「400:你的請求很爛」以外的響應。

此:

NSMutableString *data = 
    @"--=_27da60ee13b84794c5873572c502aaae\n" 
    "Content-Type: application/atom+xml\n\n" 

    "<atom:entry xmlns:atom=\"http://www.w3.org/2005/Atom\">" 
    "<media:group xmlns:media=\"http://search.yahoo.com/mrss/\">" 
    "<media:category scheme=\"http://gdata.youtube.com/schemas/2007/categories.cat\">Comedy</" 
    "media:category><media:description>test</media:description><media:keywords>" 
    "foo, var</media:keywords><media:title>test title</media:title></media:group></atom:entry>\n" 
    "--=_27da60ee13b84794c5873572c502aaae\n" 
    "Content-Type: video/mov\n" 
    "Content-Transfer-Encoding: binary\n\n"; 



    NSMutableData *allData = [NSMutableData dataWithData:[data dataUsingEncoding:NSUTF8StringEncoding]]; 
    [allData appendData:vidData]; 
    NSString *str = @"\n--=_27da60ee13b84794c5873572c502aaae--"; 
    [allData appendData:[str dataUsingEncoding:NSUTF8StringEncoding]]; 

發送這個體:

<atom:entry xmlns:atom="http://www.w3.org/2005/Atom"><media:group xmlns:media="http://search.yahoo.com/mrss/"> 
<media:category scheme="http://gdata.youtube.com/schemas/2007/categories.cat">Comedy</media:category> 
<media:description>test</media:description> 
<media:keywords>foo, var</media:keywords><media:title>test title</media:title> 
</media:group></atom:entry> 
    --=_27da60ee13b84794c5873572c502aaae 
    Content-Type: video/mov 
    Content-Transfer-Encoding: binary 

它確實結束了工作後,上傳的文件!

所以再次感謝您的幫助,我希望這可以幫助任何未來的觀衆。

MiL3s

相關問題