Цитата:
Сообщение от Taemin
IdHTTP тоже с JavaScript не дружит?
Меня сейчас озадачило два момента… Первый:
Код:
//===POST 2===
httpsend:=THTTPSend.Create;
httpsend.MimeType:='application/x-www-form-urlencoded';
httpsend.UserAgent:=('Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.10.229 Version/11.61');
stream := TStringStream.Create('');
stream.WriteString('i=1770882&type=+');
httpsend.Document.LoadFromStream(stream);
httpsend.Cookies.Text:=str.Text;
httpsend.HTTPMethod('post','http://pikabu.ru/ajax/dig.php' );
httpsend.Free;
Даже когда передаешь ASCII-код символа + как #043 его всеравно нет.
|
Плюс никуда не делся - он превратился в пробел. Спецсимволы в нужно кодировать в url-формате:
Код:
stream.WriteString('i=1770882&type=a%2Bb'); // Получим два параметра: "i=1770882" и "type=a+b"
или используй функцию EncodeURLElement.
Цитата:
Сообщение от Taemin
Второй:
Неясность с куками. Я использую для кук следующий код
Код:
str.Text:=httpsend.Cookies.Text;
и перед каждым запросом вставляю строку
Код:
httpsend.Cookies.Text:=str.Text;
|
Значит в "str.Text" пусто, так как я не вижу на скринах чтобы в левом окне вкладки "Cookies" были какие-то значения. Левое окно этой вкладки - это те куки которые мы посылаем, а правое окно это то что сервер нам присылает в ответ. Или лучше смотри вкладку "Raw Stream" - там видно в чистом виде то что мы отправляем и получаем.
Цитата:
Сообщение от Taemin
При этом снифер в Get запросе совсем ничего не видит
А два разных POST при этом имеет два разных кука... что-то работает не так как должно
|
У меня этот код работает. Попробуй для примера сделать такую замену:
Код:
httpsend.Cookies.Text := 'primer=55';