Closed Friend-LGA closed 11 years ago
@Friend-LGA интересно, да ограничения на размер ГЕТ реквеста есть, это проблема. Я сам с подобным столкнулся, когда попытался загрузить 5 изображения сразу. Насчет отправки текста ПОСТом вопрос, ибо значит надо отправлять в теле, а значит надо знать наименование поля формы, который будет отправляться, а этого неизвестно (в документации я ничего подобного не нашел к сожалению).
мне больно слышать что в этом sdk все запросы GET(((
@ichina ну начнем с того, что не все и вы решаете сами, какие запросы и как отправлять. Смотрите класс VKRequest.
@Friend-LGA а вот багрепорт связанный с изображениями: https://vk.com/bugs?act=show&id=58487857_11
ладн, на счет всех запросов, это мой косяк,давно не юзал ваш сдк, я просто судил из фразы "попытался загрузить 5 изображения сразу", мне кажется абсурдным пытаться аплоадить файлы GET запросами
@ichina дело не в загрузке файлов, а в последующем "подтверждении", а запрос на подтверждение отправляется ГЕТом (выше линк на баг)
Я на форумах Вконтакте читал, люди писали про ГЕТ и ПОСТ запросы так, будто бы для них нет проблемы отправить их в любом виде, может быть все-таки где-то есть документация, просто мы ее найти не можем... хотя это конечно маловероятно. Сейчас попробую найти ту тему...
@Friend-LGA есть подозрение, что все параметры можно просто в тело вставить и постом отправить. попробуйте с использованием VKRequest (не стоит забывать, что токен доступа тоже надо передать, ибо кастомный запрос).
https://vk.com/topic-1_24039123?offset=1660
Алексей Косюк Добрый день, подскажите, есть ли ограничение для message wall.post по размеру? начиная с определенного количества символов возвращает 400 Bad Request.
Андрей Макарушин Алексей, это не ограничение wall.post а ограничение GET ) используйте POST-запросы
@Friend-LGA попробуйте сделать так, как я вам предложил. Если с ПОСТом сработает, то я переведу все запросы в СДК на работу с ПОСТом, чтобы в дальнейшем не возникало проблем и не было неудобств.
а что именно вы хотите узнать про гет и пост запросы? если чисто идеологический смысл, то ГЕТ запросы используются чтобы просто получить инфу(типа получить список друзей, свой профиль, список фоток), ПОСТ запросы нужны чтоб СОВЕРШИТЬ какоенить действие, точнее именно СОЗДАТЬ( создать учеьную запись, создать пост, сохранить залитую фотку). Для действий которые подразумевают какиенить изменения, а не создания, использую PUT запросы( редактирование профиля, редактирование поста), и для действий подразумевающих удаление используют DELETE запросы
@AndrewShmig можете показать примерно как нужно это делать, а то я в этих запросам сам вообще не разбираюсь... вы имеете ввиду сюда загнать все параметры?
- (instancetype)initWithHTTPMethod:(NSString *)httpMethod
URL:(NSURL *)url
headers:(NSDictionary *)headers
body:(NSData *)body
или сюда?
- (instancetype)initWithRequest:(NSURLRequest *)request
@ichina вопрос мне? ликбез?) спасибо, но к чему это? @Friend-LGA тогда пару минут мне дайте, чтобы разобраться и протестировать.
@AndrewShmig да без проблем, я уже не один день над этой проблемой сижу, так что готов ждать и 10 минут и час и день, любая помощь с вашей стороны для меня бесценна в этом вопросе, нигде инфу нормальную накопать так и не смог :(
@AndrewShmig я просто пытался блеснуть своей эрудированостью, но видать не получилось((
@Friend-LGA Пожалуйста: https://vk.com/feed?w=wall58487857_3226 А вот код:
NSString *params = [NSString stringWithFormat:@"owner_id=%@&access_token=%@&message=%@",
@([VKUser currentUser].accessToken.userID),
[VKUser currentUser].accessToken.token,
[@"111: ппц, сижу ржу дома, не могу успокоиться))\n222: чего там?\n111: короче стою сегодня курю около метро, после универа.ко мне подходит поцан и спрашивает спички. а я как раз утром из дома коробок прихватил. ну я ни слова не говорю, вытаскиваю из кармана, протягиваю.\n222: ))\n111: он так смотрит, грит, зажигалкой то удобнее\n111: я опять же молча лезу в тот же карман и достаю крикет\n111: он прикуривает, отдает зажигалку, смотрит на меня секунд десять и говорит типо в шутку какой карман удивительный, все что не попросишь, все есть, небось и конфеты есть\n222: тааак, я начинаю догадываться)\n111: ))))не поверишь, уже неделю ношу с собой несколько бон пари.\n111: я молча достаю из того же кармана леденец, он ошарашенно берет его, его глаза полны ужаса\n222: ппц, бедняга))\n111: после этого я говорю ему ты потратил все три своих желания, выкидываю сигарету, разворачиваюсь и ухожу" encodeURL] ];
NSData *body = [params dataUsingEncoding:NSUTF8StringEncoding];
VKRequest *wallPost = [[VKRequest alloc]
initWithHTTPMethod:@"POST"
URL:[NSURL URLWithString:@"https://api.vk.com/method/wall.post"]
headers:@{}
body:body];
wallPost.delegate = self;
[wallPost start];
Спасибо за репорт кстати, завтра переведу СДК на использование ПОСТа, чтобы можно было постить подобные длинные вещи.
@AndrewShmig Спасибо большое! Рад что не зря написал :)
@Friend-LGA было бы за что :) Исправлю завтра.
@ichina кстати, насчет вашего комментария: я использовал везде ГЕТ только потому, что тогда было лень для каждого метода определять ГЕТ или ПОСТ использовать, поэтому взял как из доков ВК - ГЕТ. Теперь же понял, что ошибся, поэтому переведу все методы на использование ПОСТа, от чего собственно не измениться работа методов, но решатся подобные проблемы.
Так что ваш ликбез в тему. Насчет вот ПУТов или ДЕЛИТов сами понимаете, сидеть над каждым методом и определять ПОСТом ли, ГЕТом ли, ПУТом ли или ДЕЛИТом не комильфо, поэтому их и не использую (именно здесь). Так-то я с вами согласен, что красивее и правильней с ними.
@Friend-LGA Теперь вы можете вот таким образом постить на стену:
VKRequestManager *rm = [[VKRequestManager alloc]
initWithDelegate:self
user:[VKUser currentUser]];
[rm wallPost:@{
@"message": @"111: ппц, сижу ржу дома, не могу успокоиться))\n222: чего там?\n111: короче стою сегодня курю около метро, после универа.ко мне подходит поцан и спрашивает спички. а я как раз утром из дома коробок прихватил. ну я ни слова не говорю, вытаскиваю из кармана, протягиваю.\n222: ))\n111: он так смотрит, грит, зажигалкой то удобнее\n111: я опять же молча лезу в тот же карман и достаю крикет\n111: он прикуривает, отдает зажигалку, смотрит на меня секунд десять и говорит типо в шутку какой карман удивительный, все что не попросишь, все есть, небось и конфеты есть\n222: тааак, я начинаю догадываться)\n111: ))))не поверишь, уже неделю ношу с собой несколько бон пари.\n111: я молча достаю из того же кармана леденец, он ошарашенно берет его, его глаза полны ужаса\n222: ппц, бедняга))\n111: после этого я говорю ему ты потратил все три своих желания, выкидываю сигарету, разворачиваюсь и ухожу"
}];
@AndrewShmig Спасибо :)
Здравствуй Андрей.
Перелопатил кучу инфы, перепробовал все SDK для контакта, так ни в одном и не получилось запостить на стену длинный текст.
Я так понимаю что проблема в ограничении длины GET запроса, и если отправить текст POST запросом то все должно быть нормально, я прав?
Если да, подскажи пожалуйста как это сделать, вот мой код (пример с цитатой из баша):
выдает ошибку типа:
Хотя если посылать на стену текст меньшего объема, то проблем нет:
Мучаюсь уже кучу времени, буду очень благодарен любой помощи.