utt mit

utt mit

  • NA
  • 5
  • 0

The remote server returned an error: (403) Forbidden

May 6 2009 7:59 AM
this is my code:

 public string GetRank(string webSiteUrl)
        {
            string urlToCall = GetRankUrl(webSiteUrl);
            string serverResponse = RunUrl(urlToCall);

            string[] response = serverResponse.Split(':');
            if (response.Length <= 1)
                return null;
            return response[2];
        }

        private string GetRankUrl(string webSiteUrl)
        {
            string url = "info:" + webSiteUrl;
            int ch = GoogleCH(StrOrdinals(url));
            return
                "http://www.google.com/search?client=navclient-auto&ch=6"
                + ch.ToString()
                + "&features=Rank&q="
                + url;
        }

        // Starting here, this is mostly converted and adapted PHP source code
        // I definitely did not take the time to tidy it and / or try to understand the algorithms

        private static uint GOOGLE_MAGIC = 0xE6359A60;

        // Converts a string into an array of integers containing the numeric value of the char
        private int[] StrOrdinals(string inputString)
        {
            int lengthOfString = inputString.Length;
            int[] result = new int[lengthOfString];

            for (int i = 0; i < lengthOfString; i++)
            {
                result[i] = (int)inputString[i];
            }

            return result;
        }

        // Unsigned shift right
        private int ZeroFill(int a, int b)
        {
            uint z = 0x80000000;

            if ((z & a) != 0)
            {
                a = (a >> 1);
                a &= (int)(~z);
                a |= (int)(0x40000000);
                a = (a >> (b - 1));
            }
            else
            {
                a = (a >> b);
            }

            return a;
        }

        private int[] Mix(int a, int b, int c)
        {
            a -= b; a -= c; a = (int)(a) ^ (ZeroFill((int)(c), 13));
            b -= c; b -= a; b = (int)(b) ^ ((int)(a) << 8);
            c -= a; c -= b; c = (int)(c) ^ (ZeroFill((int)(b), 13));
            a -= b; a -= c; a = (int)(a) ^ (ZeroFill((int)(c), 12));
            b -= c; b -= a; b = (int)(b) ^ ((int)(a) << 16);
            c -= a; c -= b; c = (int)(c) ^ (ZeroFill((int)(b), 5));
            a -= b; a -= c; a = (int)(a) ^ (ZeroFill((int)(c), 3));
            b -= c; b -= a; b = (int)(b) ^ ((int)(a) << 10);
            c -= a; c -= b; c = (int)(c) ^ (ZeroFill((int)(b), 15));

            return new int[] { a, b, c };
        }

        private int GoogleCH(int[] url)
        {
            int a, b, c;
            int k, length, len, init;
            unchecked
            {
                init = (int)GOOGLE_MAGIC;
                a = b = (int)0x9E3779B9;
            }

            int[] mix = new int[3];
            length = url.Length;

            c = init;
            k = 0;
            len = length;

            while (len >= 12)
            {
                a += (url[k + 0] + (url[k + 1] << 8) + (url[k + 2] << 16) + (url[k + 3] << 24));
                b += (url[k + 4] + (url[k + 5] << 8) + (url[k + 6] << 16) + (url[k + 7] << 24));
                c += (url[k + 8] + (url[k + 9] << 8) + (url[k + 10] << 16) + (url[k + 11] << 24));
                mix = Mix(a, b, c);
                a = mix[0]; b = mix[1]; c = mix[2];
                k += 12;
                len -= 12;
            }

            c += length;
            switch (len)
            /*all the case statements fall through*/
            {

                case 11:
                    c += (url[k + 10] << 24);
                    goto case 10;

                case 10:
                    c += (url[k + 9] << 16);
                    goto case 9;

                case 9:
                    c += (url[k + 8] << 8);
                    /*the first byte of c is reserved for the length*/
                    goto case 8;

                case 8:
                    b += (url[k + 7] << 24);
                    goto case 7;

                case 7:
                    b += (url[k + 6] << 16);
                    goto case 6;

                case 6:
                    b += (url[k + 5] << 8);
                    goto case 5;

                case 5: b = b + (url[k + 4]);
                    goto case 4;

                case 4:
                    a += (url[k + 3] << 24);
                    goto case 3;

                case 3:
                    a += (url[k + 2] << 16);
                    goto case 2;

                case 2:
                    a += (url[k + 1] << 8);
                    goto case 1;

                case 1: a = a + (url[k + 0]);
                    /*case 0: nothing left to add*/
                    break;

            }
            mix = Mix(a, b, c);

            return mix[2];
        }

        // Nice & handy non-caching Web request method
        public static string RunUrl(string url)
        {
            WebRequest request = WebRequest.Create(url);

            //HttpRequestCachePolicy noCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
            //request.CachePolicy = noCachePolicy;

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            Stream dataStream = response.GetResponseStream();
            StreamReader reader = new StreamReader(dataStream);

            string responseFromServer = reader.ReadToEnd();

            reader.Close();
            dataStream.Close();
            response.Close();

            return responseFromServer;
        }


        private int GetLinks(string searchURL, string OutAs, string anchor, string trail)
        {
            int count = 0;
            string serverResponse = RunUrl(searchURL);
            int pos = serverResponse.IndexOf(anchor);
            if (pos > 1)
            {
                serverResponse = serverResponse.Substring(pos + anchor.Length);
                pos = serverResponse.IndexOf(trail); //" results";
                string value = serverResponse.Substring(0, pos);
                value = value.Replace(",", "");
                value = value.Replace(".", "");
                count = Int32.Parse(value);
            }

            Out(OutAs + ": " + count);

            return count;
        }

Error: The remote server returned an error: (403) Forbidden

plz solve this problem

Answers (2)