File.Existsدر وب

abasfar

Member
سلام من میخوام بدونم مثلا سایت X دارای فایلی به این نام در این زیر شاخه است یانه برای سایت Y همین طور وغییره
یعنی میخوام File.Exists وب را داشته باشم

البته کدهای هم هست که سرعتش خیلی پایین است چون صفحه یا فایل را کامل دانلود میکننه وبعد میگه هست یا نیست ممنون میشم کمک کنید

کدی تو این مایه ها نمیخوام
PHP:
try
            {
                HttpWebResponse webresponse = (HttpWebResponse)req.GetResponse();
                return true;
            }
            catch(System.Net.WebException we)
            {  return false; }
 

MDP

Well-Known Member
یه نکته ای این وسط گم شده :

شما نمی تونید به روت سایت ها دسترسی داشته باشید.مگر اینکه اون سایت برای اون فولدر دسترسی خواندن باز کرده باشه.

ثانیا این مورد نشدنیه به File.Exists چون این متد فقط روی جایی که اجرا میشه کار میکنه و جایی که اجرا میشه هم روی سرور شماست... !
 

abasfar

Member
ممنون دوست عزیز اما اگر کوکی درست کننی واز robot.txt اجازه داریکتوری را بگیری چرا میشه
مانند ویزیت از صفحه یا دانلود یک سایت من که نمیخوام لیست فایل داریکتوری را بگیرم و اگر به فرمایش شما اجازه نمیدهد پس چه نیازی به robot.txt است حالا من نگفتم File.Exists یک اور رایت داره برای وب گفتم مثل این تابع که دانلود هدر براش کافی باشه
 

sepidweb

Member
می تونید با ارسال درخواست های http get و بررسی هدر بازگشتی ببینید آیا فایل وجود دارد یا نه.
مثلا 400 بدین معناست که فایل وجود ندارد، و 200 بدین معناست که فایل قابل دانلود هست.
 
  • Like
Reactions: MDP

abasfar

Member
می تونید با ارسال درخواست های http get و بررسی هدر بازگشتی ببینید آیا فایل وجود دارد یا نه.
مثلا 400 بدین معناست که فایل وجود ندارد، و 200 بدین معناست که فایل قابل دانلود هست.

دوست عزیز ممنون میشم اگه بیشتر توضیح دهید ممنون:rose:
 

sepidweb

Member
باید جزئیات ارسال درخواست http رو بدونید.
کلاس هایی که نوشتید خیلی سطح بالا هستند.
باید از کلاس های سطح پایین تر برای اتصال استفاده کنید.
کدی شبیه به این
PHP:
    string get =
                "GET /Definition.aspx?" +
                currentBase + " HTTP/1.1\n" +
                "Host: host.ir\n" +
                "User-Agent: Mozilla/5.0\n" +
                "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\n" +
                "Accept-Language: en-us,en;q=0.5\n" +
                "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\n" +
                "Cookie: " + Session.sessionID + "\n";

            string doubleReturn = "\r\n\r\n";

            System.Net.Sockets.TcpClient Tcp = new TcpClient();

            Tcp = new TcpClient("site.ir", 80);
            NetworkStream Stream = new NetworkStream(Tcp.Client);

stream.Write(Encoding.ASCII.GetBytes(postString),
                0, ((string)(postString)).Length);

            byte[] buffer = new byte[toLoadBytes];     
            int numberOfBytesRead = 0;

try
            {
                while (numberOfBytesRead != toLoadBytes && ++i < 1000)          //just wait 10 seconds and no more for data to load. 
                //1000 * 10ms = 10 seconds
                {
                    numberOfBytesRead += stream.Read(buffer, numberOfBytesRead, buffer.Length - numberOfBytesRead);
                    System.Threading.Thread.Sleep(10);       //simply block. make interaction with other applications easier.

                    if (!headerLogged)
                    {
                        string tempResponse = Encoding.ASCII.GetString(buffer, 0, numberOfBytesRead);
                        Log.LogInSession("response header: " + tempResponse.Substring(0, tempResponse.IndexOf("\r\n")));

                        if (numberOfBytesRead < toLoadBytes)
                            Log.LogInSession("waiting for the rest of the data..");

                        headerLogged = true;

                        if (tempResponse.Contains("200")
جزئیاتش رو خودتون در بیارید.
 

abasfar

Member
باید جزئیات ارسال درخواست http رو بدونید.
کلاس هایی که نوشتید خیلی سطح بالا هستند.
باید از کلاس های سطح پایین تر برای اتصال استفاده کنید.
کدی شبیه به این
PHP:
    string get =
                "GET /Definition.aspx?" +
                currentBase + " HTTP/1.1\n" +
                "Host: host.ir\n" +
                "User-Agent: Mozilla/5.0\n" +
                "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\n" +
                "Accept-Language: en-us,en;q=0.5\n" +
                "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\n" +
                "Cookie: " + Session.sessionID + "\n";

            string doubleReturn = "\r\n\r\n";

            System.Net.Sockets.TcpClient Tcp = new TcpClient();

            Tcp = new TcpClient("site.ir", 80);
            NetworkStream Stream = new NetworkStream(Tcp.Client);

stream.Write(Encoding.ASCII.GetBytes(postString),
                0, ((string)(postString)).Length);

            byte[] buffer = new byte[toLoadBytes];     
            int numberOfBytesRead = 0;

try
            {
                while (numberOfBytesRead != toLoadBytes && ++i < 1000)          //just wait 10 seconds and no more for data to load. 
                //1000 * 10ms = 10 seconds
                {
                    numberOfBytesRead += stream.Read(buffer, numberOfBytesRead, buffer.Length - numberOfBytesRead);
                    System.Threading.Thread.Sleep(10);       //simply block. make interaction with other applications easier.

                    if (!headerLogged)
                    {
                        string tempResponse = Encoding.ASCII.GetString(buffer, 0, numberOfBytesRead);
                        Log.LogInSession("response header: " + tempResponse.Substring(0, tempResponse.IndexOf("\r\n")));

                        if (numberOfBytesRead < toLoadBytes)
                            Log.LogInSession("waiting for the rest of the data..");

                        headerLogged = true;

                        if (tempResponse.Contains("200")
جزئیاتش رو خودتون در بیارید.

ممنون دوست عزیز همان سوکت پروگرمینگ خودمان :rose:
 

abasfar

Member
شرمنده با کلی دردسر الان فهمیدم که روی سرور Linux کار نمیکنه کمک کمک ................
 

جدیدترین ارسال ها

بالا