2013-02-28 1 views
2

Мой IPad приложение посылает список файлов в качестве параметра строки, fileList к веб-метода, как это:Максимальный размер параметра для NSData/setHTTPBody?

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.

-EDIT-

Источник задачи:

Я создал WebMethod, который принимает только в весь POST как параметр, и он удаляет все после амперсанда (&), поэтому я думаю, что это может быть проблема, а не размер параметра.

+0

и хочет отправить REQ. методом POST? – iPatel

+0

Вы настраиваете заголовок HTTP-заголовка Content-Length? – trojanfoe

+0

@trojanfoe: Да, извините. Я редактировал вопрос, чтобы включить этот код. – Robert

ответ

2

Я думаю этот вопрос может быть отсутствующим 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]; 
+0

ОК, затем время, чтобы обратиться к серверу. Можете ли вы * подражать * своему запросу POST с использованием какой-либо другой технологии, чтобы убедиться, что проблема не лежит на сервере? – trojanfoe

+0

Я могу ввести отдельные параметры локально на сервере, хотя и не весь запрос POST. – Robert

+0

Вам необходимо подражать запросу POST в другом месте, чтобы исключить проблему с сервером. Вы могли бы лаять неправильное дерево. – trojanfoe