我的 iPad 应用程序将文件列表作为字符串参数 fileList
发送到如下 Web 方法:
NSString *post = [NSString stringWithFormat:@"sessionID=%@&fileList=%@&dateTime=%@&userID=%@", sessionID, fileList, timeOpened, userID];
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *comparisonURLString = SERVER_COMPARE_URL_STRING;
NSURL *comparisonURL = [NSURL URLWithString:comparisonURLString];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:comparisonURL];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
[request setHTTPMethod:@"POST"];
[request addValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody:postData];
当文件列表超过一定大小时,它似乎会被截断。我在 the apple documentation 中找不到有关最大尺寸的任何信息。另外,无论如何,后续参数似乎都可以正常接收,但在我将其视为问题的可能根源之前,我想知道是否有人知道是否存在这样的限制?
服务器正在运行 IIS7,并且 webConfig maxRequestLength
设置为 1048576。
-编辑-
问题根源:
我创建了一个 webmethod,它只接受整个 POST
作为参数,并删除与号 (&) 之后的所有内容,所以我认为这可能是问题所在,而不是参数大小。
最佳答案
我认为问题可能是缺少 Content-Type
HTTP 请求 header 字段:
[request setValue:@"application/x-www-form-urlencoded; charset=UTF-8" forHTTPHeaderField:@"Content-Type"];
还使用 UTF-8 对有效负载进行编码:
NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
关于ios - NSData/setHTTPBody 的最大参数大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15133189/