Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > indy->post


Автор: Валерия 3.3.2009, 02:30
Код

TStringList * command=new TStringList();
command->Add("a=1");
IdHTTP1->Post("http://test1.ru/test.php", command);


[C++ Error] Unit1.cpp(22): E2285 Could not find a match for 'TIdHTTP::Post(char *,TStringList *)'

Добавлено через 5 минут и 12 секунд
Разобралась, правда делается через попу:
Код

TMemoryStream *aStream = new TMemoryStream();
TStringStream *StrStream = new TStringStream(NULL);
TStringList * command=new TStringList();
command->Add("a=1");
IdHTTP1->Post("http://test1.ru/test.php", command, aStream);
aStream->Seek(0, soFromBeginning);
aStream->SaveToStream(StrStream);
StrStream->Seek(0, soFromBeginning);

String test = (StrStream->DataString);
Memo1 -> Text = test;


Добавлено через 12 минут и 37 секунд
Но проблема в том что данные a=1 не передаются
php скрипт 
Код

<?
print_r($_POST);
?>


Выводится просто 
Array
(
)

Автор: srt 6.3.2009, 11:02
Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString URL;
URL = "http://book/base.php";

TStringStream* ResultStream = new TStringStream("");
TStringList* Params = new TStringList();
TStringList* result = new TStringList();
IdHTTP1->Request->ContentType = "application/x-www-form-urlencoded";
IdHTTP1->Request->UserAgent = "Application v0.1";

//  Params->Append("user=1234");
//  Params->Append("&pass=dfg");
//  Params->Append("&action=add_new_node");
//  Params->Append("&parent_id=12");


//Memo1->Lines->LoadFromFile("rng1.txt");
Params->LoadFromFile("rng0.txt");
//Params->Append("name=" + Memo1->Lines->Text);
Memo1->Lines->Text = "name=";
for(int i = 0; i < Params->Count; i++){
Memo1->Lines->Add(Params->Strings[i] + ",");
}


Params->Clear();
//Params->Add("name=");
Params->Append(Memo1->Lines->Text);

IdHTTP1->Post(URL,Params,ResultStream);
result->Text = ResultStream->DataString;
Memo2->Lines->Text = result->Text;
}



мемы для наглядности, цикл тоже необязателен - это я экспериментировал просто smile
текст из файла грузится, файл обычный текст, можно другие данные грызть конечно
тока не пойму почему не все данные приходят, ограничение на длину пост есть наверное, читать некогда ..

Автор: ksili 6.3.2009, 11:09
По-моему вместо 
Код

TStringList* Params = new TStringList();

надо
Код

TStrings* Params = new TStringList();

Автор: srt 7.3.2009, 02:59
может быть ..

в тексте были & (POST их воспринимает как добавление новой переменной)
пришлось прогнать текст URLEncode, а потом вогнать его в base64
тогда цельные данные приходят
только буфер для TIdBase64Encoder пришлось увеличить, иначе тоже данные режет

Автор: srt 29.4.2011, 17:37
12345

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)