簡體   English   中英

request.getResponse()出現錯誤

[英]request.getResponse() is getting error

這是我的代碼,正在我朋友的PC上返回期望的輸出,但在我的PC上卻沒有。

我們倆都在使用Visual Studio 2017社區:

在此處輸入圖片說明

這是將返回輸入地址的緯度和經度的代碼:

[在此處輸入圖片描述] [2]

第一次運行正常,但是之后拋出該異常(403禁止錯誤!!! /主要問題在request.getResponse()上)

    private static String[] x = new String[3];

    public static String[] GetFirstLastName(string address)
    {
        try { 
        string url = "http://maps.google.com/maps/api/geocode/xml?address=" + address + "&sensor=false";

        WebRequest request = WebRequest.Create(url);
        // request.UseDefaultCredentials = true;
        // request.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
        // request.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
        using (WebResponse response = (HttpWebResponse)request.GetResponse())
        {
            using (var reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
            {
                var ds = new DataSet("Employee");
                ds.ReadXml(reader);

                DataRow dr = null;

                var dt = new DataTable("Employee");
                dt.Columns.AddRange(new DataColumn[2]
                    {
                        new DataColumn("Latitude", typeof (string)),
                        new DataColumn("Longitude", typeof (string))
                    });

                int i = 0;

                try
                {
                    foreach (DataRow row in ds.Tables["result"].Rows)
                    {
                    }
                }
                catch (Exception e)
                {
                   Console.WriteLine(e.ToString());
                   return x;
                }

                foreach (DataRow row in ds.Tables["result"].Rows)
                {
                    if (i == 0)
                    {
                        string geometry_id = ds.Tables["geometry"].Select("result_id = " + row["result_id"])[0]["geometry_id"].ToString();

                        dr = ds.Tables["location"].Select("geometry_id = " + geometry_id)[0];

                        dt.Rows.Add(dr["lat"], dr["lng"]);

                        //  Console.WriteLine(dr["lat"].ToString() + " " + dr["lng"].ToString());
                        i = 1;
                        break;
                    }
                }

                x[0] = dr["lat"].ToString();
                x[1] = dr["lng"].ToString();

                reader.Close();
            }

            // request.Timeout = 0;
            // request.Abort();
            response.Close();
            return x;
        }
    }
    catch(Exception e)
    {
        Console.WriteLine(e);
        x[0] = "";
        x[1] = "";
        return x;
    }
}

public static String[] GetFirstLastName1(string address)
{
        try
        {
            string url = "http://maps.google.com/maps/api/geocode/xml?address=" + address + "&sensor=false";
            WebRequest request = WebRequest.Create(url);
            //  request.UseDefaultCredentials = true;
            // request.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
            //   request.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
            using (WebResponse response = request.GetResponse())
            {
                using (var reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
                {
                    var ds = new DataSet("Employee");
                    ds.ReadXml(reader);

                    DataRow dr = null;

                    var dt = new DataTable("Employee");
                    dt.Columns.AddRange(new DataColumn[2]
                    {
                new DataColumn("Latitude", typeof (string)),
                new DataColumn("Longitude", typeof (string))
                    });

                    int i = 0;

                    try
                    {
                        foreach (DataRow row in ds.Tables["result"].Rows)
                        {

                        }


                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.ToString());

                        return x;
                    }

                    foreach (DataRow row in ds.Tables["result"].Rows)
                    {
                        if (i == 0)
                        {
                            string geometry_id = ds.Tables["geometry"].Select("result_id = " + row["result_id"])[0]["geometry_id"].ToString();

                            dr = ds.Tables["location"].Select("geometry_id = " + geometry_id)[0];

                            dt.Rows.Add(dr["lat"], dr["lng"]);

                            //  Console.WriteLine(dr["lat"].ToString() + " " + dr["lng"].ToString());
                            i = 1;
                            break;
                        }
                    }
                    x[0] = dr["lat"].ToString();
                    x[1] = dr["lng"].ToString();
                    reader.Close();
                }
                //// request.Timeout = 0;
                ///   request.Abort();
                response.Close();
                return x;
            }
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
            x[0] = "";
            x[1] = "";
            return x;
        }

    }
    static void Main(string[] args)
    {

        int i = 0;

        for (;;)
        {
            String x = Console.ReadLine();
            if (i == 0)
            {
                String[] y = GetFirstLastName(x);

                Console.WriteLine(y[0] + " " + y[1]);
            }
            else
            {
                String[] y = GetFirstLastName1(x);

                Console.WriteLine(y[0] + " " + y[1]);
            }

            i++;
        }
        //Console.ReadKey();
    }
}

}

/ *(與上面相同的代碼)

enter code here

///我的朋友輸出///我的輸出[2]: https : //i.stack.imgur.com/qeDcz.png * /

很高興看到您加入了StackOverflow!

現在,通常會發生403錯誤,這與代碼中的語法錯誤無關,而與從Google服務器收到的響應有關。

現在,特別是Google對一天可以進行多少個API調用非常嚴格(Google為要支付大量API調用的開發人員賺了很多錢)。 此頁面包含限制。 如果您取得的收益超出了此處的數字,這就是為什么您會收到錯誤消息,而必須等到明天。 請記住不要發送太多的HTTP請求並意外地對其進行DOS,因為它們會為此將您列入黑名單。

確保您沒有緩存他們的頁面或在本地存儲js腳本,因為這也會導致黑名單。

確保在此處使用https:而不是http:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM