سلام
میخوام وقتی مثلا آدرس سایت ماکروسافت را دادم آدرس اصلی که میره را بده
مثلا وقتی وارد در اینترنت اکسپلورر میزنم
www.microsoft.com میره به
http://www.microsoft.com/en/us/default.aspx
خودم همینجوری یک کد نوشتم که چنین کاری میکنه ولی مشکلش اینه که خیلی طول میکشه(حالا یک کد میخوام که مثل این طول نکشه)
و یک سوال دیگه نمیشه اصلا از WebBrowser استفاده نکنم؟(اگر API باشه خوبه یا از کنترل دیگه ای!)
این کد که نوشتم
کد:
Private Sub Command1_Click()
WebBrowser1.Navigate ("www.microsoft.com")
End Sub
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
MsgBox URL
End Sub
یا حق
فکر نمیکردم اینقدر سطح اینجا بالاست!
دوست عزیز شما یک سوال عجیب غریب پرسیدی انتظار پاسخ هم داری.پرش بین آدرس ها یا با کد هست که این کد می تونه کده جاوا اسکریپت باشه یا هر کد دیگری یا تعریف هایی که از صفحه اصلی سایت در سرور می شه.برای لود کردن صفحات وب هم می تونید از winsock یا msinet یا webbrowser و یا mshtml و یا با api های openinternet و توابع مربوط به آن استفاده کنید که هر کدومشون فواید و مضرات خودشون رو دارن و شما نسبت به احتیاجات خودتون باید از آن استفاده کنید.موفق باشی.یا علی
دوست عزیز اول ممنونم از پاسختون
من فکر نمی کنم سوال عجیبی پرسیده باشم.حالا اگر شما چنین چیزی ندیدن و عجیبه این بحثش جداست!
کد:
Private Sub Command1_Click()
Winsock1.Close
Winsock1.Connect "www.microsoft.com", 80
End Sub
Private Sub Winsock1_Connect()
Winsock1.SendData GET_Header("www.microsoft.com")
End Sub
Function GET_Header(ByVal Host As String) As String
Dim Pck As String
Pck = Pck & "GET / HTTP/1.1" & vbCrLf
Pck = Pck & "Host: " & Host & vbCrLf
Pck = Pck & "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)" & vbCrLf
Pck = Pck & "Connection: keep-alive" & vbCrLf
'Pck = Pck & "Connection: Close" & vbCrLf
GET_Header = Pck & vbCrLf
End Function
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim HDATA As String
Winsock1.GetData HDATA
Text1 = HDATA
End Sub
آدرس ريدايرکت روبروی Location: قرار داره
(۱۱-اسفند-۱۳۸۸, ۰۷:۵۰:۵۵)arashi نوشته است: [ -> ]این فقط میتونه مسیر بعدش را بگیره
اگه خود دومین ریدایرکت شد چی؟
مثلا
http://www.gmail.com
که میره به
http://mail.google.com/mail
با همون مثال بالا آدرس جديد فرستاده ميشه
فرقش اينه جيميل با هدر 301 آدرس جديد رو ميفرسته و مايکروسافت با هدر 302
نخیر شما یک آدرس دیگه را تست کنید می بینید نمیشه
ولی در مورد گوگل حق با شماست
آدرسی که نميشه رو قرار بده
(۱۲-اسفند-۱۳۸۸, ۰۲:۲۳:۱۰)arashi نوشته است: [ -> ]مثلا
http://www.bankpasargad.com/?calcaccounts1
که میره به
http://bpi.ir/?calcaccounts1
هيچ فرقی نميکنه
توی پروتکل HTTP آدرس ها به اين شکل ريدايرکت ميشن اگه غير از اين باشه پس مرورگر ها هم قادر به پيدا کردن آدرس ريدايرکت نخواهند بود
اگه غير از اين فکر ميکنيد پروتکل HTTP رو ياد بگيريد اينطوری بخواد پيش بره هر روز بايد يه لينک جديد بذاری و تاپيک پايانی نخواهد داشت
کد:
HTTP/1.1 302 Found
Date: Wed, 03 Mar 2010 10:40:53 GMT
Server: Apache/2.2.11 (Unix) mod_ssl/2.2.11 OpenSSL/0.9.8b mod_bwlimited/1.4 PHP/5.2.8
X-Powered-By: PHP/5.2.8
Set-Cookie: PHPSESSID=3781ff0102e70b4c88b5643ccf72c13f; path=/
Expires: Mon, 26 Jul 2020 05:00:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Location: http://bpi.ir/?calcaccounts1
Content-Encoding: gzip
Vary: Accept-Encoding
Content-Length: 26
Keep-Alive: timeout=1, max=10000
Connection: Keep-Alive
Content-Type: text/html
توی خط اول تو مثال ميبايست صفحه سايت هم بعد از GET/ قرار بدی
GET /
?calcaccounts1 HTTP/1.1