nsurlrequest设置为POST

问题描述:

我正在设置一个请求到我的服务器,我已经帮了一些建议,但我想要一些代码的一些澄清。nsurlrequest设置为POST

在第二行代码

,有什么的setValue:forHTTPHeaderField:用于值?我想为HTTPHeaderField:设置MIME类型......但我不知道什么setValue是为什么或它如何影响我的请求。

[request setHTTPMethod: @"POST"]; 
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"]; 
[request setHTTPBody:postBodyData]; 

任何帮助将不胜感激。

参见NSMutableURLRequest reference14.17的Content-Type部分,用于首标信息的方法的描述和HTTP documentation。在section 7.2.1

的Content-Type

多个C-T细节指定的基础数据的媒体类型。内容编码可用于指示应用于数据的任何附加内容编码,通常用于数据压缩的目的,这是所请求资源的属性。没有默认编码。

任何包含entity-body的HTTP/1.1消息都应该包含一个Content-Type头域来定义该body的媒体类型。如果 并且仅当媒体类型不是由Content-Type字段给出时,则收件人可以尝试通过检查其内容和/或用于识别的URI的名称扩展名来猜测媒体类型 资源。如果媒体类型不明,接收者应该将其视为类型“application/octet-stream”。

+0

非常感谢链接..我检查了苹果文档,他们给最无助的(对我来说)描述**参数 值 标题字段的新值。该字段的任何现有值均由新值替换。 字段 要设置的标题字段的名称。为了与HTTP RFC保持一致,HTTP标头字段名称不区分大小写。 ** – 2012-02-23 21:45:27

+0

@ C.Johns查看增加的信息,它应该使Content-Type头部使用更清晰。至于setValue:forHTTPHeaderField:函数,第二个参数负责ANY头名称(写入时不区分大小写),第一个参数是该头文件的值。是的,标题应该有值,标题名称是键(就像字典)。 – 2012-02-23 22:08:33

每个HTML请求都包含请求标头和正文。

在你的例子中,你定义了这个请求的主体包含表单数据。

例如,如果您想提交一个json结构作为您的请求体,请求的内容类型将被设置为“application/json”。

+0

是的,我明白,所以在这种情况下** forHTTPHeaderField **会有我的jason MIME类型..不知道它是什么。但是,我的setValue会是什么?说我是否用自己的格式发送直接数据... – 2012-02-23 21:47:44

+0

“application/json”mimetype示例的值可能是:{“name”:“some name”} – 2012-02-23 22:00:52

在内容类型的情况下,它可能是text/html,text/xmlimage/gif

这里的目的是指定传输什么类型的数据。请参阅http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

对于不同的媒体类型,请参阅http://en.wikipedia.org/wiki/Internet_media_type

另请参阅NSURLRequest reference了解该类别的具体情况。