Помогите с методом Post и использованием wininet.dll

 

WinInet.DLL прикрутил но никак не получаеться послать запрос методом Post что передать имя пользователя и пароль помогите плиз Делаю советника который со странички берет сигнал.



//+----------------------------------------------------------------------------------------------------------+

void SaveFileFromNet()

{
if(!IsDllsAllowed())
{
Alert("Необходимо в настройках разрешить использование DLL");
return(0);
}
int rv = InternetAttemptConnect(0);
if(rv != 0)
{
Alert("Ошибка при вызове InternetAttemptConnect()");
return(0);
}
int hInternetSession = InternetOpenA("Microsoft Internet Explorer",
0, "", "", 0);
if(hInternetSession <= 0)
{
Alert("Ошибка при вызове InternetOpenA()");
return(0);
}
\\\\\\\\?????????????????????? Вот тут мать его должен быть Post о как
int hURL = InternetOpenUrlA(hInternetSession,
"http://www.forexsignal.ru/t_plan.php", "", 0, 0, 0);
if(hURL <= 0)
{
Alert("Ошибка при вызове InternetOpenUrlA()");
InternetCloseHandle(hInternetSession);
return(0);
}
int cBuffer[256];
int dwBytesRead[1];
string TXT = "";
while(!IsStopped())
{
bool bResult = InternetReadFile(hURL, cBuffer, 1024, dwBytesRead);
if(dwBytesRead[0] == 0)
break;
string text = "";
for(int i = 0; i < 256; i++)
{
text = text + CharToStr(cBuffer[i] & 0x000000FF);
if(StringLen(text) == dwBytesRead[0])
break;
text = text + CharToStr(cBuffer[i] >> 8 & 0x000000FF);
if(StringLen(text) == dwBytesRead[0])
break;
text = text + CharToStr(cBuffer[i] >> 16 & 0x000000FF);
if(StringLen(text) == dwBytesRead[0])
break;
text = text + CharToStr(cBuffer[i] >> 24 & 0x000000FF);
}
TXT = TXT + text;
Sleep(500);
}
if(TXT != "")
{
int h = FileOpen("SavedFromInternet.htm", FILE_CSV|FILE_WRITE);
if(h > 0)
{
FileWrite(h,TXT);
FileClose(h);
Alert("Готово! См. файл .../experts/files/SavedFromInternet.htm");
}
else
{
Alert("Ошибка при вызове FileOpen()");
}
}
else
{
Alert("Нет считанных данных");
}
InternetCloseHandle(hInternetSession);

 
используйте GET. интересно куда вы вставляете пароль и имя при использовании POST?
 
Integer:
используйте GET. интересно куда вы вставляете пароль и имя при использовании POST?


Мне нужен именно Post, написал на делфи работает а вот тут не могу заставить может я не правильно описал его:

#import "wininet.dll"
int InternetAttemptConnect (int x);
int InternetOpenA(string sAgent, int lAccessType,
string sProxyName = "", string sProxyBypass = "",
int lFlags = 0);
int InternetOpenUrlA(int hInternetSession, string sUrl,
string sHeaders = "", int lHeadersLength = 0,
int lFlags = 0, int lContext = 0);
bool HttpSendRequest(string HINTERNET, string lpszHeaders ="",
int dwHeadersLength=0, string lpOptional="", int dwOptionalLength=0);

bool Post(string lpszAction="", string lpszData="", string lpszReferer="");


int InternetReadFile(int hFile, int& sBuffer[], int lNumBytesToRead,
int& lNumberOfBytesRead[]);
int InternetCloseHandle(int hInet);
#import

 
Вы хотите, чтобы вам помогли, или чтобы дали сразу готовый код? Где ваши попытки?
 
посмотрел код... не мы так не играем - в коде никакого намека на попытки использования POST. Не понимаю, что вы на дельфи писали, но в выше расположенный код не похож на попытку переписывания готовой реализации с дельфи на mql4.
 
Integer:
посмотрел код... не мы так не играем - в коде никакого намека на попытки использования POST. Не понимаю, что вы дельфи писали, но в выше расположенный код не похож на попытку переписывания готовой реализации с дельфи на mql4.

procedure TForm1.Button1Click(Sender: TObject);
var
LoginInfo: TStrings;
Response: TStringStream;
i,k,g,h,r,s,l : Integer;
pp:String;
begin
LoginInfo := TStringList.Create;
Response := TStringStream.Create('');
LoginInfo.Clear;
LoginInfo.Add('log56=fs472');
LoginInfo.Add('pass89=***');

try
if firststart <>1 then
begin
IdHTTP1.Post('http://www.forexsignal.ru/setcc.php',LoginInfo,Response);
IdHTTP1.Post('http://www.forexsignal.ru/t_plan.php',LoginInfo,Response);
IdHTTP1.Post('http://www.forexsignal.ru/kabinet.php',LoginInfo,Response);
firststart:=1;
//showmessage('первый старт мать его');
end;
if firststart = 1 then
begin
IdHTTP1.Post('http://www.forexsignal.ru/t_plan.php',LoginInfo,Response);
firststart:=1;
end;
except
form1.ListBox1.Items.Add(DateToStr(Date())+' '+TimeToStr(time())+' Ошибка получения запрса - превышен интервал ожидания');
exit;
End;
//showmessage(Response.DataString);
i:=Pos('(последние 10 сигналов, разосланных подписчикам)</p>',Response.DataString);
k:=Pos('<p><b>Сделки за последние 2 месяца текущего года:</b></p>',Response.DataString);
g:=Pos('Текущие сделки:',Response.DataString);
h:=Pos('История сообщений:',Response.DataString);
r:=Pos('Пользователь:</b>&nbsp;',Response.DataString);
l:=Pos('Сервис оплачен до:',Response.DataString);
pp:= Copy(Response.DataString,r+23,100);
s:=Pos('</td>',pp);
If Edit1.Text = 'fs437' then Label6.Caption:='Лисименко Максим Владимирович';
If Edit1.Text <> 'fs437' then Label6.Caption:=Copy(pp,0,s-1);

If Edit1.Text <> 'fs437' then Label7.Caption:=Copy(Response.DataString,l+45,10);
If Edit1.Text = 'fs437' then
Begin
if StrToInt(Copy(DateToStr(Date()),1,2))<28 then
Begin
Label7.Caption:='28.'+Copy(DateToStr(Date()),4,2)+'.2008';
End;


End;


Memo1.Lines.Clear;
Memo2.Lines.Clear;
Memo1.Lines.Add('<link href="style.css" rel="stylesheet" type="text/css">'+Copy(Response.DataString,i+52,k-105-i+52));
Memo1.Lines.SaveToFile('doc.htm');
Memo2.Lines.Add('<link href="style.css" rel="stylesheet" type="text/css">'+Copy(Response.DataString,g+23,h-105-g+32));
Memo2.Lines.SaveToFile('doc1.htm');
// ShowMessage(Copy(Response.DataString,g+23,h-105-g+37));
WebBrowser1.Navigate(GetCurrentDir+'\doc.htm');
WebBrowser2.Navigate(GetCurrentDir+'\doc1.htm');

Response.Free;
LoginInfo.Free;
StatusBar1.Panels.Items[0].Text:='Последнее получение данных в '+TimeToStr(time())+' '+DateToStr(Date());
MakeDataBaseFile(Sender);
CheckSignal(Sender);
// MakeFileCurrentTrades();
ListBox1.Items.Add(DateToStr(Date())+' '+TimeToStr(time())+' Получение запроса c www.forexsignal.ru - успешно');

end;
Причина обращения: