200分求助将c#改成delphi
本帖最后由 caozhy 于 2013-09-04 17:44:39 编辑
项目地址
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
using System.Xml;
using System.Xml.Linq;
using System.Windows.Forms;
namespace WindowsFormsApplication11
{
class BaiduApi
{
public static string GetDistance(string rregion, string rcity, string dregion, string dcity)
{
string str = "";
try
{
XDocument docbaidudis = XDocument.Load(Application.StartupPath + "\\baidudis.XML");
int count = int.Parse(creatconxml());
WebRequest request = WebRequest.Create("http://api.map.baidu.com/direction/v1?mode=driving&origin=" + rregion + "&destination=" + dregion + "&origin_region=" + rcity + "&destination_region=" + dcity + "&output=json&ak=" + docbaidudis.Element("sys").Element("key" + count.ToString()).Value);
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("gb2312"));
str = reader.ReadToEnd();
reader.Close();
reader.Dispose();
response.Close();
int statusindex = str.IndexOf("status");
string status = str.Substring(statusindex + 8, 1);
if (status == "0")
{
int lastdisindex = str.LastIndexOf("distance");
string distance = str.Substring(lastdisindex + 10, str.IndexOf(",", lastdisindex) - lastdisindex);
return distance.Remove(distance.IndexOf(','));
}
else if (status == "2")
{
return status;
}
else//(status == "5")
{
XDocument docbaiducount = XDocument.Load(Application.StartupPath + "\\baiducount.XML");
docbaiducount.Element("sys").Element("key").Value = (int.Parse(docbaiducount.Element("sys").Element("key").Value) + 1).ToString();
docbaiducount.Save("baiducount.xml");
return GetDistance(rregion, rcity, dregion, dcity);
}
}
catch (Exception tt)
{
return "0";
}
}
private static string creatconxml()
{
if (!File.Exists("baiducount.xml"))
{
XmlWriter writer = null;
try
{
writer = XmlWriter.Create("baiducount.xml");
writer.WriteStartElement("sys");
writer.WriteElementString("date", System.DateTime.Today.ToShortDateString());
writer.WriteElementString("key", "1");
writer.WriteEndDocument();
writer.Flush();
}
finally
{
if (writer != null)
writer.Close();
}
return "1";
}
else
{
XDocument doc = XDocument.Load(Application.StartupPath + "\\baiducount.XML");
string datetime = doc.Element("sys").Element("date").Value;
if (Convert.ToDateTime(datetime).Date != System.DateTime.Today)
{
doc.Element("sys").Element("date").Value = System.DateTime.Today.ToShortDateString();
doc.Element("sys").Element("key").Value = "1";
doc.Save("baiducount.XML");
return "1";
}
else
{
return doc.Element("sys").Element("key").Value;
}
}
}
}