wininet api函數使用經驗點滴

來源:互聯網
上載者:User
 wininet api函數使用經驗點滴
著作權聲明:原創作品,允許轉載,轉載時請務必以超連結形式標明文章 原始出處 、作者資訊和本聲明。否則將追究法律責任。http://chenjava.blog.51cto.com/374566/84769
一.使用HttpSendRequestEx後,如需使用HttpQueryInfo,需先用HttpEndRequest結束Request二.BOOL HttpQueryInfo(    IN HINTERNET hHttpRequest,    IN DWORD dwInfoLevel,    IN LPVOID lpvBuffer,    IN LPDWORD lpdwBufferLength,    IN OUT LPDWORD lpdwIndex,);lpdwBufferLength會返回所需的Buffer大小,因此如果多次使用此函數,需要多次對lpdwBufferLength賦值,否則會出現ERROR_INSUFFICIENT_BUFFER錯誤樣本程式:   hHttpFile=HttpOpenRequest(hConnect,"POST","/avlab/index.php",NULL,NULL,0,    INTERNET_FLAG_DONT_CACHE|INTERNET_FLAG_NO_COOKIES|INTERNET_FLAG_KEEP_CONNECTION    |INTERNET_FLAG_RELOAD,0);   HttpAddRequestHeaders(hHttpFile,szCookie,-1,HTTP_ADDREQ_FLAG_ADD);   HttpAddRequestHeaders(hHttpFile,"Content-Type: application/x-www-form-urlencoded",-1,HTTP_ADDREQ_FLAG_ADD);   HttpSendRequestEx(hHttpFile,&struInterIn,NULL,NULL,NULL);   HttpEndRequest(hHttpFile,NULL,NULL,NULL);
   nLength=512;//這一句很重要,,因為HttpQueryInfo返回的時候,會改變此值   HttpQueryInfo(hHttpFile,HTTP_QUERY_SET_COOKIE,szBuffer,(unsigned long *)&nLength,NULL);三.使用InternetReadFile一定要記得比較已經讀取的位元組數,以確定資料是否已經全部讀完     如果InternetReadFile未把response的資料讀完,後續的request會被response資料淹沒,而得不到服務端的及時響應或者無響應.這時候再HttpSendRequest,後續的HttpQueryInfo會不成功    四.字串操作時,一定要檢查傳回值,以防後續代碼進行非法操作五.     如果向網頁提交帶參數的get或者post命令,網站需要處理時間,其返回網址的內容可能還沒有更新過,如果需要擷取更新後的內容,需要對更新前後的內容進行比較六. HttpSendRequest或者HttpSendRequestEx發送訊息後如果未接受到response,則會返回NULL,Error Code被設為12002,即逾時錯誤,可以使用 InternetSetOption(hHttpFile,INTERNET_OPTION_SEND_TIMEOUT,&timeout,sizeof(DWORD));  設定逾時時間七.     不能太依賴伺服器提供的檔案大小,因為有的時候伺服器並不提供檔案大小,此時如果再使用HttpQueryInfo擷取大小,則會出錯,GetLastError()傳回值為12150問題:1.網頁是如何?命令發送的?它發送的命令的內容儲存在哪裡?它除了構建http頭,還可以填充http訊息體?2.真是奇了怪了,http訊息居然跟multipart的part分隔字元相關,在某些分隔字元下發送會不成功,查分隔字元的取名規則本文出自 “執空法壇” 部落格,請務必保留此出處http://chenjava.blog.51cto.com/374566/84769

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.