0

似乎为标头字段(即@“Content-Type”)设置值不会采用该值,除非它是 base64 编码的。方法文档说它需要一个普通的 NSString,所以它真的不重要。但是,以这种方式对其进行编码似乎会使 post 请求的值变得无用......对吗?见下文:

[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)

但是如果我将值字符串@“multipart ...”编码为base64:

产量:

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

          ===headerField content-type===

bXVsdGlwYXJ0L3JlbGF0ZWQ7IGJvdW5kYXJ5PT1fMjdkYTYwZWUxM2I4NDc5`*

有什么想法吗?

谢谢!

4

2 回答 2

0

在这里摆脱换行符:boundary==_27da60ee13b84794c5873572c502aaae\n. 将其更改为boundary==_27da60ee13b84794c5873572c502aaae. 这可能是一种保护自己免受您尝试注入其他标头的方法。

于 2010-12-22T20:30:25.740 回答
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

于 2010-12-22T22:40:49.970 回答