Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2007.04.08;
Скачать: [xml.tar.bz2];

Вниз

Помогите с 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.061 c
8-1152652402
Raptoridzev
2006-07-12 01:13
2007.04.08
проиграть в микрофон


11-1154152692
Stals
2006-07-29 09:58
2007.04.08
Звуковое сопровождение


2-1174163176
Игорек
2007-03-17 23:26
2007.04.08
Дескриптор


2-1174151568
vegarulez
2007-03-17 20:12
2007.04.08
Как в TEdit разрешить записаь только цифр?


15-1173799748
oldman
2007-03-13 18:29
2007.04.08
Accept "Механическое сердце"





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский