NSData附加到NSMutableURLRequest时的格式是什么?

时间:2013-03-21 15:56:49

标签: php ios nsdata nsmutableurlrequest

我正在使用NSMutableURLRequest将数据发送到我的PHP服务器。这就是我创建请求的方式:

NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];
NSString *boundary = @"---------------------------14737809831466499882746641449";
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
[request addValue:contentType forHTTPHeaderField:@"Content-Type"];
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n", key] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:[@"whatever" objectForKey:@"message"]] dataUsingEncoding:NSUTF8StringEncoding]];  //converting strings to NSData
[body appendData:[textParams objectForKey:key]];
[body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:body];

我的问题是,服务器收到的数据格式是什么? I.E. $_POST['message'],是二进制,十六进制,base64,常规字符串吗?

1 个答案:

答案 0 :(得分:1)

“message”值将以字符串形式出现。在您的PHP中,您可以:

$message = $_POST['message'];

虽然您的代码存在问题。每个要发布的文本值需要以下行:

[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n", @"message"] dataUsingEncoding:NSUTF8StringEncoding]];
NSString *text = ... // the text value to post for "message"
[body appendData:[text dataUsingEncoding:NSUTF8StringEncoding];  //converting strings to NSData
[body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];

您试图在字符串文字上调用objectForKey:。你不能这样做。此外,您添加了textParams。我不知道应该是什么,但你需要为你发布的每个值提供上述行。也许这些参数需要成为text的一部分。