我的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];
当文件列表超过一定大小时,它似乎被截断了。我在apple文档中找不到任何关于最大尺寸的内容。此外,随后的参数似乎收到了OK,无论如何,但在我将其作为问题的可能来源之前,我想知道是否有人知道是否有这样的限制?
服务器运行IIS7, webConfig maxRequestLength
设置为1048576
编辑——
问题来源:
我创建了一个webmethod,只接受整个POST
作为参数,它删除了与符号(&)之后的一切,所以我认为这可能是问题所在,而不是参数大小。
我认为问题可能是缺少Content-Type
HTTP请求头字段:
[request setValue:@"application/x-www-form-urlencoded; charset=UTF-8" forHTTPHeaderField:@"Content-Type"];
也使用UTF-8来编码负载:
NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];