如果位置错误,如何为 google api 请求设置错误消息
how to set error message for google api request if location is wrong
{
string url = "http://maps.google.com/maps/api/geocode/xml?address=" + Location.Text + "&sensor=false";
WebRequest request = WebRequest.Create(url);
using (WebResponse response = (HttpWebResponse)request.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
DataSet dsResult = new DataSet();
dsResult.ReadXml(reader);
DataTable dtCoordinates = new DataTable();
dtCoordinates.Columns.AddRange(new DataColumn[4]
{
new DataColumn("Id", typeof(int)),
new DataColumn("Address", typeof(string)),
new DataColumn("Latitude",typeof(string)),
new DataColumn("Longitude",typeof(string))
});
// if (response["status"] == OK)
// {
foreach (DataRow row in dsResult.Tables["result"].Rows)
{
string geometry_id = dsResult.Tables["geometry"].Select("result_id = " + row["result_id"].ToString())[0]["geometry_id"].ToString();
DataRow location = dsResult.Tables["location"].Select("geometry_id = " + geometry_id)[0];
// TextBox1.Text = location["lat"];
dtCoordinates.Rows.Add(row["result_id"], row["formatted_address"], location["lat"], location["lng"]);
// TextBox1.Text = dsResult.Tables["lat"].ToString;
// TextBox2.Text = location["lng"];
}
GridView1.DataSource = dtCoordinates;
GridView1.DataBind();
}
在上面的代码中,如果我给 Google API 错误的位置,则会发生错误,因为未设置实例。在这里我需要一条消息作为标签或其他位置错误的东西。
请试试这个代码:
{
string url = "http://maps.google.com/maps/api/geocode/xml?address=" + Location.Text + "&sensor=false";
try{
WebRequest request = WebRequest.Create(url);
using (WebResponse response = (HttpWebResponse)request.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
DataSet dsResult = new DataSet();
dsResult.ReadXml(reader);
DataTable dtCoordinates = new DataTable();
dtCoordinates.Columns.AddRange(new DataColumn[4]
{
new DataColumn("Id", typeof(int)),
new DataColumn("Address", typeof(string)),
new DataColumn("Latitude",typeof(string)),
new DataColumn("Longitude",typeof(string))
});
// if (response["status"] == OK)
// {
foreach (DataRow row in dsResult.Tables["result"].Rows)
{
string geometry_id = dsResult.Tables["geometry"].Select("result_id = " + row["result_id"].ToString())[0]["geometry_id"].ToString();
DataRow location = dsResult.Tables["location"].Select("geometry_id = " + geometry_id)[0];
// TextBox1.Text = location["lat"];
dtCoordinates.Rows.Add(row["result_id"], row["formatted_address"], location["lat"], location["lng"]);
// TextBox1.Text = dsResult.Tables["lat"].ToString;
// TextBox2.Text = location["lng"];
}
GridView1.DataSource = dtCoordinates;
GridView1.DataBind();
}
catch(Exception err)
{
if(err.Message.Contains("instance is not set"))//Check if you get error code then match error code
{
Console.Write("Custom message");
MessageBox.Show("Custom message");
}
else
{
Console.Write("Normal message");
MessageBox.Show("Normal message");
}
}
}
如果您有任何疑问或问题,请随时问我。
{
string url = "http://maps.google.com/maps/api/geocode/xml?address=" + Location.Text + "&sensor=false";
WebRequest request = WebRequest.Create(url);
using (WebResponse response = (HttpWebResponse)request.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
DataSet dsResult = new DataSet();
dsResult.ReadXml(reader);
DataTable dtCoordinates = new DataTable();
dtCoordinates.Columns.AddRange(new DataColumn[4]
{
new DataColumn("Id", typeof(int)),
new DataColumn("Address", typeof(string)),
new DataColumn("Latitude",typeof(string)),
new DataColumn("Longitude",typeof(string))
});
// if (response["status"] == OK)
// {
foreach (DataRow row in dsResult.Tables["result"].Rows)
{
string geometry_id = dsResult.Tables["geometry"].Select("result_id = " + row["result_id"].ToString())[0]["geometry_id"].ToString();
DataRow location = dsResult.Tables["location"].Select("geometry_id = " + geometry_id)[0];
// TextBox1.Text = location["lat"];
dtCoordinates.Rows.Add(row["result_id"], row["formatted_address"], location["lat"], location["lng"]);
// TextBox1.Text = dsResult.Tables["lat"].ToString;
// TextBox2.Text = location["lng"];
}
GridView1.DataSource = dtCoordinates;
GridView1.DataBind();
}
在上面的代码中,如果我给 Google API 错误的位置,则会发生错误,因为未设置实例。在这里我需要一条消息作为标签或其他位置错误的东西。
请试试这个代码:
{
string url = "http://maps.google.com/maps/api/geocode/xml?address=" + Location.Text + "&sensor=false";
try{
WebRequest request = WebRequest.Create(url);
using (WebResponse response = (HttpWebResponse)request.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
DataSet dsResult = new DataSet();
dsResult.ReadXml(reader);
DataTable dtCoordinates = new DataTable();
dtCoordinates.Columns.AddRange(new DataColumn[4]
{
new DataColumn("Id", typeof(int)),
new DataColumn("Address", typeof(string)),
new DataColumn("Latitude",typeof(string)),
new DataColumn("Longitude",typeof(string))
});
// if (response["status"] == OK)
// {
foreach (DataRow row in dsResult.Tables["result"].Rows)
{
string geometry_id = dsResult.Tables["geometry"].Select("result_id = " + row["result_id"].ToString())[0]["geometry_id"].ToString();
DataRow location = dsResult.Tables["location"].Select("geometry_id = " + geometry_id)[0];
// TextBox1.Text = location["lat"];
dtCoordinates.Rows.Add(row["result_id"], row["formatted_address"], location["lat"], location["lng"]);
// TextBox1.Text = dsResult.Tables["lat"].ToString;
// TextBox2.Text = location["lng"];
}
GridView1.DataSource = dtCoordinates;
GridView1.DataBind();
}
catch(Exception err)
{
if(err.Message.Contains("instance is not set"))//Check if you get error code then match error code
{
Console.Write("Custom message");
MessageBox.Show("Custom message");
}
else
{
Console.Write("Normal message");
MessageBox.Show("Normal message");
}
}
}
如果您有任何疑问或问题,请随时问我。