hur.cn - 华软网

 热门搜索

求助高手,无法下载图片和其它非字符文件

  作者:未知    来源:网络    更新时间:2018/3/3
long ll_BufLen
string ls_Buffer
string ls_null
integer li_RetQueryInfo
long ll_index
setnull(ls_null)
il_hOpen = InternetOpen("scUserAgent", 1, ls_null,ls_null, 0)
If il_hOpen = 0 Then
   messagebox('error'"无法连接")
Else
        il_hFile = InternetOpenUrl(il_hOpen, is_url, ls_null, 0, 1,  0)
        If il_hFile = 0 Then
            messagebox('error',"无法连接")
        Else
          ll_BufLen = 1024
       ls_Buffer = Space(ll_BufLen)
          li_RetQueryInfo = HttpQueryInfo(il_hFile,21,ls_Buffer, ll_BufLen, ll_index)
                ls_Buffer = left(ls_Buffer, ll_BufLen)
        End If
    End If
ulong ll_file,ll_ret
string lc_sbuffer
long  ll_return
ulong ll_i
ll_file= FileOpen("h.html",linemode!,write!,lockwrite!)
lc_sbuffer=space(10000)
ll_return= InternetReadFile (il_hFile,  lc_sbuffer, 10000, ll_Ret )
FileWrite(ll_file, lc_sbuffer)
Fileclose(ll_file)

------华软网友回答------
API函数定义如下:
Function Long InternetOpen (String sAgent,Long lAccessType,String sProxyName,String sProxyBypass,Long lFlags) Library "wininet" Alias For "InternetOpenA" 
Function Long InternetCloseHandle (Long hInet  )  Library "wininet"  
Function Long InternetOpenUrl (Long hInternetSession,String lpszUrl, String lpszHeaders, Long dwHeadersLength, Long dwFlags,Long  dwContext  ) Library "wininet" Alias For "InternetOpenUrlA"
Function Integer HttpQueryInfo (Long hHttpRequest,Long lInfoLevel, String sBuffer ,ref Long lBufferLength ,ref Long lIndex ) Library "wininet.dll" Alias For "HttpQueryInfoA" 
Function ulong InternetReadFile (ulong hFile,ref string lpBuffer, ulong dwNumberOfBytesToRead, ref ulong lpdwNumberOfBytesRead) Library "WININET.DLL"

------华软网友回复------
我怀疑问题在InternetReadFile 函数的定义上,lpBuffer 在VB格式下是BYTE,我觉得该用CHAR类型,但无法获得下载的信息.而改用ref string 后,可以下载html文档,但无法下载图片,压缩包等其它非图片文件.
各位高手,兄弟在此拜谢了!
------华软网友回复------
估计是你的buffer太小,装不下文件. 你可以用getlasterror 来取得错误号,然后参照错误信息分析问题.
------华软网友回复------
FUNCTION ulong GetLastError() LIBRARY "kernel32.dll"

....
ll_return= InternetReadFile (il_hFile,  lc_sbuffer, 10000, ll_Ret )
messagebox('test', GetLastError() )
------华软网友回复------
谢谢,楼上兄台.刚刚试过GETLASTERROR()函数,返回值为0.
而下载的图片无法预览,而且大小只有4个字节,占用空间却达4096字节,真是愁煞人了.      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。