Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.08;
Скачать: CL | DM;

Вниз

Помогите с WinINet ом... :(   Найти похожие ветки 

 
DillerXX ©   (2006-10-20 23:58) [0]

Как извесно ф-ция InternetQueryDataAvailable должна возвращать True при успехе, и False при неудаче. Но что делать если она постоянно возвращает false? В GetLastError лежит 997, что по МСДНу означает
ERROR_IO_PENDING
997 Overlapped I/O operation is in progress.
Что это может означать, где искать проблему?..
P.S. На всякий случай запостил в 2 конференции, всё же решить нужно как можно быстрее.


 
Сергей М. ©   (2006-10-23 14:06) [1]

покажи код целиком..


 
isasa ©   (2006-10-23 16:30) [2]

А посмотреть подробности.
До использования (InternetQueryDataAvailable) и чтения данных (InternetReadFile), но после посылки запроса (HttpSendRequest).

var i : longword;
...
 HttpSendRequest(hHTTP, nil, 0, nil, 0);
...
 HttpQueryInfo(hHTTP, HTTP_QUERY_STATUS_CODE or HTTP_QUERY_FLAG_NUMBER, @i, ...);
 //i - Код состояния HTTP (200 - Ok! ... 400 Error. Not found ...)  
 ...
 HttpQueryInfo(hHTTP, HTTP_QUERY_RAW_HEADERS_CRLF, ...);//все заголовки в буфер, разделенные CR/LF
...
 HttpQueryInfo(hHTTP, HTTP_QUERY_CONTENT_LENGTH, ...); //  Retrieves the size of the resource, in bytes.


 
seeker ©   (2006-10-23 16:52) [3]


> HttpQueryInfo(hHTTP, HTTP_QUERY_CONTENT_LENGTH, ...)

Ни очем не говорит...
важно что в тех параметрах которые под "...".


 
isasa ©   (2006-10-23 17:05) [4]

seeker ©   (23.10.06 16:52) [3]
HTTP_QUERY_CONTENT_LENGTH говорит о том, что запихнуть в те параметры, которые под ... :)

Судя по [0], автор сабжа с MSDN знаком. :)


 
seeker ©   (2006-10-23 17:19) [5]

procedure GetResponseIntHeaderProp(hRequest:pointer; API_FLAG: dword; var FuncResult:dword);
var Index:dword;

function InternalHttpQueryInfoAsInt(hRequest: HINTERNET; dwInfoLevel: DWORD; var Buffer: dword;
                                    var lpdwIndex: DWORD): boolean;
var
 lpvBuffer:pchar;
 lpdwBufferLength: DWORD;          
begin
 lpdwBufferLength:=4;
 getMem(lpvBuffer, lpdwBufferLength);
 try
   result:=boolean(HttpQueryInfo(hRequest, dwInfoLevel, lpvBuffer, lpdwBufferLength, lpdwIndex));
   if result then
      buffer:=pdword(lpvBuffer)^;
 finally
   freeMem(lpvBuffer, lpdwBufferLength);
 end;
end;

begin
 Index:=0;
 if not InternalHttpQueryInfoAsInt(hRequest,API_FLAG or HTTP_QUERY_FLAG_NUMBER ,Funcresult,Index) then
     FuncResult:=0;
end;

Приблизительно так...


 
isasa ©   (2006-10-23 17:20) [6]

Поясню, что я имел ввиду. :)

При коде состояния 200(ну и там, чего-нибудь еще) просто тупо начать читать из потока InternetReadFile - ом, проверяя код возврата (BOOL) и lpdwNumberOfBytesRead


 
isasa ©   (2006-10-23 18:19) [7]

Не. :)
Учитывая ....

MSDN
...
Remarks
You can retrieve the following types of data from HttpQueryInfo:

Strings (default)
SYSTEMTIME (for dates)
DWORD (for STATUS_CODE, CONTENT_LENGTH, and so on, if HTTP_QUERY_FLAG_NUMBER has been used)

If your application requires that the data be returned as a data type other than a string, you must include the appropriate modifier with the attribute passed to dwInfoLevel.


можно проще


var
   i : longword;   // type DWORD = Longword;
   bLen, hInd : longword;  
...
 bLen:=4;
 hInd:=0;
 HttpQueryInfo(hHTTP, HTTP_QUERY_STATUS_CODE or HTTP_QUERY_FLAG_NUMBER, @i, bLen, hInd);
...



Страницы: 1 вся ветка

Текущий архив: 2007.04.08;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.037 c
1-1171344040
алексей с.
2007-02-13 08:20
2007.04.08
вывод содржимого Tcanvc на печать.


15-1173686804
Vlad Oshin
2007-03-12 11:06
2007.04.08
Хорошо, очередная рац.идея :) Шляпа.


5-1151004761
Krants
2006-06-22 23:32
2007.04.08
Локальные параметры...


15-1173978662
Vendict
2007-03-15 20:11
2007.04.08
Подскажите программу.


6-1161425585
Rosmi
2006-10-21 14:13
2007.04.08
TServerSocket и статус соединения