PDA

View Full Version : دانلود یک فایل متنی . با فرستادن متغیر های POST



shankimout
جمعه 08 اردیبهشت 1385, 08:07 صبح
سلام . من به دلایلی نباید از کنترل Inet استفاده کنم ولی یه روشی برای دانلود فایل با چند api از کتابخانه wininet.dll پیدا کردم که کارمو خیلی راحت راه میندازه . اما من میخام به همراه درخواست خودم یک متغیرپست بفرستم .

متغیر پست رو میشه با یه header فرستاد ولی من وقتی از ارگومان مربوط به header های اضافی در api ن InternetOpenUrlA استفاده میکنم درست عمل نمیکنه . من باید چنین header ی برای متغیر POST استفاده کنم



cont=somevalue&cont2=...



کسی روشی به ذهنش نمیرسه ؟



Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, _
ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Const STRING_SIZE = 128
Private Const INTERNET_FLAG_NO_CACHE_WRITE = &H4000000
Private Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal sUrl As String, ByVal sHeaders As String, ByVal lHeadersLength As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long
Private Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer

Public Function GetWebData(strUrl As String, Optional header_strings As String) As String
On Error Resume Next

If IsMissing(header_strings) Then
header_strings = vbNullString
End If

Dim hInternet, hSession, lngDataReturned As Long
Dim intReadFileResult As Integer
Dim strBuffer As String * 128
Dim strTotalData As String
hSession = InternetOpen("vb wininet", 1, vbNullString, 0, 0)
If hSession = 0 Then
Exit Function
Else
hInternet = InternetOpenUrl(hSession, strUrl, header_strings, 0, INTERNET_FLAG_NO_CACHE_WRITE, 0)
End If

If hInternet = 0 Then
Else
intReadFileResult = InternetReadFile(hInternet, strBuffer, STRING_SIZE, lngDataReturned)
strTotalData = strBuffer
Do While lngDataReturned <> 0
intReadFileResult = InternetReadFile(hInternet, strBuffer, STRING_SIZE, lngDataReturned)
strTotalData = strTotalData + Mid(strBuffer, 1, lngDataReturned)
Loop
End If
intReadFileResult = InternetCloseHandle(hInternet)
GetWebData = strTotalData
strTotalData = ""
End Function