<span style="font-size:14px;background-color: rgb(255, 255, 255);">web service调用步骤</span>
<span style="font-size:14px;background-color: rgb(255, 255, 255);">1、右键 项目-->引用-->添加服务引用</span>
<span style="font-size:14px;background-color: rgb(255, 255, 255);">2、在命名空间写入一个名称,然后 --> 高级</span>
<span style="font-size:14px;background-color: rgb(255, 255, 255);">3、-->添加web引用</span>
<span style="font-size:14px;background-color: rgb(255, 255, 255);">4、输入asmx地址,然后转到,然后点击 -->添加引用,结束</span>
using System.IO;
using System.Net;
using System.Text;
using System.Xml;
using System;
using Newtonsoft.Json;
using System.Drawing;
using System.Drawing.Imaging;
using Newtonsoft.Json.Linq;
using ConsoleApplication2.com.fengjing.travel;
using System.Collections.Generic;
using System.Threading;
using System.Linq;
/*
http://travel.fengjing.com/HolidaySvc.asmx
{"RCode":"fengjing@#*!2014","ClientType":"1","Module":"scenic","Method":"GetScenicPicList","Data":"11749"} 图片
{"RCode":"fengjing@#*!2014","ClientType":"1","Module":"scenic","Method":"GetScenicLBS","Data":{"scenicId":"11749"}} 坐标
{"RCode":"fengjing@#*!2014","ClientType":"1","Module":"scenic","Method":"getscenicofvoice","Data":{"scenicId":"11749","userId":""}} 景区+所有子景点列表
{"RCode":"fengjing@#*!2014","ClientType":"1","Module":"scenic","Method":"getsceniclistofcity","Data":{"PageIndex":3,"PageSize":20,"QueryDict":{"cityname":"无锡","voice":"1"}}} 所有景区第3页
{"RCode":"fengjing@#*!2014","ClientType":"1","Module":"scenic","Method":"getsceniclistofcity","Data":{"PageIndex":1,"PageSize":20,"QueryDict":{"cityname":"无锡","voice":"1"}}} 所有景区第1页
{"RCode":"fengjing@#*!2014","ClientType":0,"Module":"SmartTour","Method":"GetRegionList","Data":{"RegionKey":""}} 所有城市
*/
class City
{
public string Initial { get; set; }
public string Code { get; set; }
public string Parent { get; set; }
public string Name { get; set; }
public string IsSmartTourCity { get; set; }
}
class Scenic
{
public string ScenicId { get; set; }
public string SName { get; set; }
public string PriceNotes { get; set; }
public string City { get; set; }
public string County { get; set; }
public string Level { get; set; }
public string ScenicMes { get; set; }
public string ScenicPic { get; set; }
public string ListionVoiceCount { get; set; }
public string TicketCounT { get; set; }
public string SalePrice { get; set; }
public string voice_Picture { get; set; }
public string isVoice { get; set; }
public string isPiao { get; set; }
public string lon { get; set; }
public string lat { get; set; }
public string Address { get; set; }
public string Score { get; set; }
public string CommentCount { get; set; }
public string CommentList { get; set; }
public string FavoriteCountOfPiao { get; set; }
public string IsFavoriteOfPiao { get; set; }
public string FavoriteCountOfVoice { get; set; }
public string IsFavoriteOfVoice { get; set; }
public string VoiceFile { get; set; }
public string scenicDistance { get; set; }
public string PicCount { get; set; }
public string LocalVoiceCount { get; set; }
public string LocalVoiceTypeCount { get; set; }
}
class Scenic1
{
public string ScenicId { get; set; }
public string SName { get; set; }
public string PriceNotes { get; set; }
public string City { get; set; }
public string County { get; set; }
public string Level { get; set; }
public string ScenicMes { get; set; }
public string ScenicPic { get; set; }
public string ListionVoiceCount { get; set; }
public string TicketCounT { get; set; }
public string SalePrice { get; set; }
public string voice_Picture { get; set; }
public string isVoice { get; set; }
public string isPiao { get; set; }
public string lon { get; set; }
public string lat { get; set; }
public string mapPath { get; set; }
public string Address { get; set; }
public string Score { get; set; }
public string FavoriteCountOfVoice { get; set; }
public string IsFavoriteOfVoice { get; set; }
public string IsScenicTrfface { get; set; }
public string IsScenicNews { get; set; }
public string IsScenicCustom { get; set; }
public string IsScenicFood { get; set; }
public string scType { get; set; }
public string Traffic { get; set; }
public string PicCount { get; set; }
}
class ScenicChild
{
public string ScenicId { get; set; }
public string SpotId { get; set; }
public string FileName { get; set; }
public string FileSize { get; set; }
public string InertTimeStr { get; set; }
public string SummaryTxt { get; set; }
public string ImgPath { get; set; }
public string SpotName { get; set; }
public string FileExt { get; set; }
public string FileNameShort { get; set; }
public string localvoicelist { get; set; }
}
class Spot
{
public string Title { get; set; }
public string XCoord { get; set; }
public string YCoord { get; set; }
public string ScenicId { get; set; }
public string SpotId { get; set; }
public string SpotName { get; set; }
}
namespace ConsoleApplication2
{
class Program
{
public static HolidaySvc svc = new HolidaySvc();
public static int CityCount; //城市个数
public static int ScenicCount; //每个城市景点个数
public static int ScenicChildCount; //每个景点语音个数
public static int ImgUrlCount; //图片个数
public static int SpotCount; //现场个数
public static City[] city = new City[500];
public static Scenic1 scenic1 = new Scenic1();
public static ScenicChild[] scenicchild = new ScenicChild[100];
public static string[] url = new string[50];
public static Spot[] spot = new Spot[100];
public static void getCityArray()
{
string senddata = "{\"RCode\":\"fengjing@#*!2014\",\"ClientType\":0,\"Module\":\"SmartTour\",\"Method\":\"GetRegionList\",\"Data\":{\"RegionKey\":\"\"}}";
string ss = svc.RequestServiceData(senddata);
ss = "[" + ss + "]";
using (StreamWriter sw = new StreamWriter(@"D: \ALL\CityJson.txt"))
{
sw.WriteLine(ss);
}
JArray jsonObj = JArray.Parse(ss);
JObject j = (JObject)jsonObj.First;
j = (JObject)j["Data"];
jsonObj = (JArray)j["Citys"];
foreach (JObject jObject in jsonObj)
{
city[CityCount] = new City();
city[CityCount].Initial = jObject["Initial"].ToString();
city[CityCount].Code = jObject["Code"].ToString();
city[CityCount].Parent = jObject["Parent"].ToString();
city[CityCount].Name = jObject["Name"].ToString();
city[CityCount].IsSmartTourCity = jObject["IsSmartTourCity"].ToString();
CityCount++;
}
}
public static void CreateScenicArray(string city, string path)
{
List<Scenic> scenic = new List<Scenic>();
ScenicCount = 0;
for (int i = 1; i < 50; i++)
{
string senddata = "{\"RCode\":\"fengjing@#*!2014\",\"ClientType\":\"1\",\"Module\":\"scenic\",\"Method\":\"getsceniclistofcity\",\"Data\":{\"PageIndex\":" + i.ToString() + ",\"PageSize\":20,\"QueryDict\":{\"cityname\":\"" + city + "\",\"voice\":\"1\"}}}";
string s = svc.RequestServiceData(senddata);
s = "[" + s + "]";
JArray jsonObj = JArray.Parse(s);
JObject j = (JObject)jsonObj.First;
string f = j["Data"].ToString();
if (f == "")
{
break;
}
using (StreamWriter sw = new StreamWriter(path + @"\景点列表JSON.txt"))
{
sw.WriteLine(f);
}
jsonObj = (JArray)j["Data"];
foreach (JObject jObject in jsonObj)
{
var sc = new Scenic();
sc.ScenicId = jObject["ScenicId"].ToString();
sc.SName = jObject["SName"].ToString();
sc.PriceNotes = jObject["PriceNotes"].ToString();
sc.City = jObject["City"].ToString();
sc.County = jObject["County"].ToString();
sc.Level = jObject["Level"].ToString();
sc.ScenicMes = jObject["ScenicMes"].ToString();
sc.ScenicPic = jObject["ScenicPic"].ToString();
sc.ListionVoiceCount = jObject["ListionVoiceCount"].ToString();
sc.TicketCounT = jObject["TicketCounT"].ToString();
sc.SalePrice = jObject["SalePrice"].ToString();
sc.voice_Picture = jObject["voice_Picture"].ToString();
sc.isVoice = jObject["isVoice"].ToString();
sc.isPiao = jObject["isPiao"].ToString();
sc.lon = jObject["lon"].ToString();
sc.lat = jObject["lat"].ToString();
sc.Address = jObject["Address"].ToString();
sc.Score = jObject["Score"].ToString();
sc.CommentCount = jObject["CommentCount"].ToString();
sc.CommentList = jObject["CommentList"].ToString();
sc.FavoriteCountOfPiao = jObject["FavoriteCountOfPiao"].ToString();
sc.IsFavoriteOfPiao = jObject["IsFavoriteOfPiao"].ToString();
sc.FavoriteCountOfVoice = jObject["FavoriteCountOfVoice"].ToString();
sc.IsFavoriteOfVoice = jObject["IsFavoriteOfVoice"].ToString();
sc.VoiceFile = jObject["VoiceFile"].ToString();
sc.scenicDistance = jObject["scenicDistance"].ToString();
sc.PicCount = jObject["PicCount"].ToString();
sc.LocalVoiceCount = jObject["LocalVoiceCount"].ToString();
sc.LocalVoiceTypeCount = jObject["LocalVoiceTypeCount"].ToString();
scenic.Add(sc);
ScenicCount++;
}
}
//for (int i = 2; i < ScenicCount; i++) //从2开始忽略广州塔和罗浮宫==============================================================
try
{
scenic.Skip(2).ToList().AsParallel().ForAll(sc =>
{
// var sc = scenic[i];
DirectoryInfo dir = new DirectoryInfo(path);
dir.CreateSubdirectory(sc.SName);//创建景点目录
Console.WriteLine(sc.SName + "目录创建完毕");//打印查看
string path1 = path + @"\" + sc.SName;
dir = new DirectoryInfo(path1);
dir.CreateSubdirectory("Scenic");//创建景点目录下的景点资源目录
using (StreamWriter sw = new StreamWriter(path1 + @"\Scenic\Scenic.txt"))//创建简介文本文件并写入
{
sw.WriteLine(sc.ScenicId);
sw.WriteLine(sc.SName);
sw.WriteLine(sc.PriceNotes);
sw.WriteLine(sc.City);
sw.WriteLine(sc.County);
sw.WriteLine(sc.Level);
sw.WriteLine(sc.ScenicMes);
sw.WriteLine(sc.ScenicPic);
sw.WriteLine(sc.ListionVoiceCount);
sw.WriteLine(sc.TicketCounT);
sw.WriteLine(sc.SalePrice);
sw.WriteLine(sc.voice_Picture);
sw.WriteLine(sc.isVoice);
sw.WriteLine(sc.isPiao);
sw.WriteLine(sc.lon);
sw.WriteLine(sc.lat);
sw.WriteLine(sc.Address);
sw.WriteLine(sc.Score);
sw.WriteLine(sc.CommentCount);
sw.WriteLine(sc.CommentList);
sw.WriteLine(sc.FavoriteCountOfPiao);
sw.WriteLine(sc.IsFavoriteOfPiao);
sw.WriteLine(sc.FavoriteCountOfVoice);
sw.WriteLine(sc.IsFavoriteOfVoice);
sw.WriteLine(sc.VoiceFile);
sw.WriteLine(sc.scenicDistance);
sw.WriteLine(sc.PicCount);
sw.WriteLine(sc.LocalVoiceCount);
sw.WriteLine(sc.LocalVoiceTypeCount);
sw.WriteLine("==================================================");
}
downloadPicture(sc.ScenicPic, path1 + @"\Scenic\ScenicPic.jpg");
downloadPicture(sc.voice_Picture, path1 + @"\Scenic\voice_Picture.jpg");
downloadSound(sc.VoiceFile, path1 + @"\Scenic\VoiceFile.mp3");
try
{
dir.CreateSubdirectory("Scenic1");//创建景点目录下的Scenic1目录
CreateScenic1(sc.ScenicId, path1 + @"\Scenic1");
CreateScenic1Child(sc.ScenicId, path1 + @"\Scenic1"); //下载spot声音
}
catch (Exception e)
{
Console.WriteLine(e.Message + "CreateScenic1错误");
}
try
{
dir.CreateSubdirectory("Images");//创建景点目录下的Images目录
CreateImg(sc.ScenicId, path1 + @"\Images");
}
catch (Exception e)
{
Console.WriteLine(e.Message + "CreateImg错误");
}
try
{
CreateSpot(sc.ScenicId, path1); //创建现场所有坐标点txt
}
catch (Exception e)
{
Console.WriteLine(e.Message + "CreateSpot错误");
}
});
}
catch(Exception e)
{
Console.WriteLine(e.Message+"sc错误");
}
}
public static void CreateScenic1(string id, string path)
{
string senddata = "{\"RCode\":\"fengjing@#*!2014\",\"ClientType\":\"1\",\"Module\":\"scenic\",\"Method\":\"getscenicofvoice\",\"Data\":{\"scenicId\":\"" + id + "\",\"userId\":\"\"}}";
string s = svc.RequestServiceData(senddata);
s = "[" + s + "]";
using (StreamWriter sw = new StreamWriter(path + @"\声音文件Json.txt"))
{
sw.WriteLine(s);
}
JArray jsonObj = JArray.Parse(s);
JObject j = (JObject)jsonObj.First;
j = (JObject)j["Data"];
scenic1.ScenicId = j["ScenicId"].ToString();
scenic1.SName = j["SName"].ToString();
scenic1.PriceNotes = j["PriceNotes"].ToString();
scenic1.City = j["City"].ToString();
scenic1.County = j["County"].ToString();
scenic1.Level = j["Level"].ToString();
scenic1.ScenicMes = j["ScenicMes"].ToString();
scenic1.ScenicPic = j["ScenicPic"].ToString();
scenic1.ListionVoiceCount = j["ListionVoiceCount"].ToString();
scenic1.TicketCounT = j["TicketCounT"].ToString();
scenic1.SalePrice = j["SalePrice"].ToString();
scenic1.voice_Picture = j["voice_Picture"].ToString();
scenic1.isVoice = j["isVoice"].ToString();
scenic1.isPiao = j["isPiao"].ToString();
scenic1.lon = j["lon"].ToString();
scenic1.lat = j["lat"].ToString();
scenic1.mapPath = j["mapPath"].ToString();
scenic1.Address = j["Address"].ToString();
scenic1.Score = j["Score"].ToString();
scenic1.FavoriteCountOfVoice = j["FavoriteCountOfVoice"].ToString();
scenic1.IsFavoriteOfVoice = j["IsFavoriteOfVoice"].ToString();
scenic1.IsScenicTrfface = j["IsScenicTrfface"].ToString();
scenic1.IsScenicNews = j["IsScenicNews"].ToString();
scenic1.IsScenicCustom = j["IsScenicCustom"].ToString();
scenic1.IsScenicFood = j["IsScenicFood"].ToString();
scenic1.scType = j["scType"].ToString();
scenic1.Traffic = j["Traffic"].ToString();
scenic1.PicCount = j["PicCount"].ToString();
downloadPicture(scenic1.mapPath, path + @"\导游图.jpg");
using (StreamWriter sw = new StreamWriter(path + @"\简介1.txt"))
{
sw.WriteLine(scenic1.ScenicId);
sw.WriteLine(scenic1.SName);
sw.WriteLine(scenic1.PriceNotes);
sw.WriteLine(scenic1.City);
sw.WriteLine(scenic1.County);
sw.WriteLine(scenic1.Level);
sw.WriteLine(scenic1.ScenicMes);
sw.WriteLine(scenic1.ScenicPic);
sw.WriteLine(scenic1.ListionVoiceCount);
sw.WriteLine(scenic1.TicketCounT);
sw.WriteLine(scenic1.SalePrice);
sw.WriteLine(scenic1.voice_Picture);
sw.WriteLine(scenic1.isVoice);
sw.WriteLine(scenic1.isPiao);
sw.WriteLine(scenic1.lon);
sw.WriteLine(scenic1.lat);
sw.WriteLine(scenic1.mapPath);
sw.WriteLine(scenic1.Address);
sw.WriteLine(scenic1.Score);
sw.WriteLine(scenic1.FavoriteCountOfVoice);
sw.WriteLine(scenic1.IsFavoriteOfVoice);
sw.WriteLine(scenic1.IsScenicTrfface);
sw.WriteLine(scenic1.IsScenicNews);
sw.WriteLine(scenic1.IsScenicCustom);
sw.WriteLine(scenic1.IsScenicFood);
sw.WriteLine(scenic1.scType);
sw.WriteLine(scenic1.Traffic);
sw.WriteLine(scenic1.PicCount);
sw.WriteLine("==================================================");
}
Console.WriteLine(scenic1.SName + "简介创建完毕");
}
public static void CreateScenic1Child(string id, string path)
{
List<ScenicChild> lsc = new List<ScenicChild>();
string senddata = "{\"RCode\":\"fengjing@#*!2014\",\"ClientType\":\"1\",\"Module\":\"scenic\",\"Method\":\"getscenicofvoice\",\"Data\":{\"scenicId\":\"" + id + "\",\"userId\":\"\"}}";
string s = svc.RequestServiceData(senddata);
s = "[" + s + "]";
JArray jsonObj = JArray.Parse(s);
JObject j = (JObject)jsonObj.First;
j = (JObject)j["Data"];
jsonObj = (JArray)j["spotlist"];
foreach (JObject jObject in jsonObj)
{
var sc = new ScenicChild();
sc.ScenicId = jObject["ScenicId"].ToString();
sc.SpotId = jObject["SpotId"].ToString();
sc.FileName = jObject["FileName"].ToString();
sc.FileSize = jObject["FileSize"].ToString();
sc.InertTimeStr = jObject["InertTimeStr"].ToString();
sc.SummaryTxt = jObject["SummaryTxt"].ToString();
sc.ImgPath = jObject["ImgPath"].ToString();
sc.SpotName = jObject["SpotName"].ToString();
sc.FileExt = jObject["FileExt"].ToString();
sc.FileNameShort = jObject["FileNameShort"].ToString();
sc.localvoicelist = jObject["localvoicelist"].ToString();
lsc.Add(sc);
ScenicChildCount++;
}
try
{
lsc.ToList().AsParallel().ForAll(sc => {
DirectoryInfo dir = new DirectoryInfo(path);
dir.CreateSubdirectory(sc.SpotName);
using (StreamWriter sw = new StreamWriter(path + @"\" + sc.SpotName + @"\简介.txt"))
{
sw.WriteLine(sc.ScenicId);
sw.WriteLine(sc.SpotId);
sw.WriteLine(sc.FileName);
sw.WriteLine(sc.FileSize);
sw.WriteLine(sc.InertTimeStr);
sw.WriteLine(sc.SummaryTxt);
sw.WriteLine(sc.ImgPath);
sw.WriteLine(sc.SpotName);
sw.WriteLine(sc.FileExt);
sw.WriteLine(sc.FileNameShort);
sw.WriteLine(sc.localvoicelist);
sw.WriteLine("==================================================");
}
downloadPicture(sc.ImgPath, path + @"\" + sc.SpotName + @"\1.jpg");
downloadSound(sc.FileName, path + @"\" + sc.SpotName + @"\1.mp3");
Console.WriteLine(sc.SpotName + "文件下载完毕");
});
}
catch
{
Console.WriteLine("sc1错误");
}
}
public static void CreateImg(string id, string path)
{
ImgUrlCount = 0;
string senddata = "{\"RCode\":\"fengjing@#*!2014\",\"ClientType\":\"1\",\"Module\":\"scenic\",\"Method\":\"GetScenicPicList\",\"Data\":\"" + id + "\"}";
string s = svc.RequestServiceData(senddata);
s = "[" + s + "]";
using (StreamWriter sw = new StreamWriter(path + @"\Json3.txt"))
{
sw.WriteLine(s);
}
JArray jsonObj = JArray.Parse(s);
JObject j = (JObject)jsonObj.First;
jsonObj = (JArray)j["Data"];
foreach (JObject jObject in jsonObj)
{
url[ImgUrlCount] = jObject["url"].ToString();
ImgUrlCount++;
}
for (int i = 0; i < ImgUrlCount; i++)
{
downloadPicture(url[i], path + @"\" + i.ToString() + ".jpg");
}
Console.WriteLine("此景区所有图片下载完毕");
}
public static void CreateSpot(string id, string path)
{
SpotCount = 0;
string senddata = "{\"RCode\":\"fengjing@#*!2014\",\"ClientType\":\"1\",\"Module\":\"scenic\",\"Method\":\"GetScenicLBS\",\"Data\":{\"scenicId\":\"" + id + "\"}}";
string s = svc.RequestServiceData(senddata);
s = "[" + s + "]";
using (StreamWriter sw = new StreamWriter(path + @"\坐标Json.txt"))
{
sw.WriteLine(s);
}
JArray jsonObj = JArray.Parse(s);
JObject j = (JObject)jsonObj.First;
jsonObj = (JArray)j["Data"];
foreach (JObject jObject in jsonObj)
{
spot[SpotCount] = new Spot();
spot[SpotCount].Title = jObject["Title"].ToString();
spot[SpotCount].XCoord = jObject["XCoord"].ToString();
spot[SpotCount].YCoord = jObject["YCoord"].ToString();
spot[SpotCount].ScenicId = jObject["ScenicId"].ToString();
spot[SpotCount].SpotId = jObject["SpotId"].ToString();
spot[SpotCount].SpotName = jObject["SpotName"].ToString();
SpotCount++;
}
using (StreamWriter sw = new StreamWriter(path + @"\Spot.txt"))
{
for (int i = 0; i < SpotCount; i++)
{
sw.WriteLine(spot[i].Title + ":" + spot[i].XCoord + ":" + spot[i].YCoord + ":" + spot[i].ScenicId + ":" + spot[i].SpotId + ":" + spot[i].SpotName);
}
}
Console.WriteLine("坐标下载完毕");
}
public static void downloadPicture(string url, string path)
{
try
{
Uri uri = new Uri(url);
WebRequest request = WebRequest.Create(uri);
WebResponse response = request.GetResponse();
Stream s = response.GetResponseStream();
Image image = Image.FromStream(s);
image.Save(path, ImageFormat.Jpeg);//绝对路径
}
catch (Exception e)
{
Console.WriteLine(e.Message + "图片不存在");
}
}
public static void downloadSound(string url, string path)
{
try
{
//创建请求
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
//接收响应
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//输出流
Stream responseStream = response.GetResponseStream();
using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write))
{
byte[] bufferBytes = new byte[10000];//缓冲字节数组
int bytesRead = -1;
while ((bytesRead = responseStream.Read(bufferBytes, 0, bufferBytes.Length)) > 0)
{
fs.Write(bufferBytes, 0, bytesRead);
}
//关闭写入
fs.Flush();
fs.Close();
}
}
catch (Exception e)
{
Console.WriteLine(e.Message + ",文件不存在");
}
}
public static void CreateALL()
{
List<string> ll = new List<string>();
getCityArray();
string path = @"";
for (int i = 0; i < CityCount; i++)
{
try
{
if (!ll.Contains(city[i].Initial))
{
ll.Add(city[i].Initial);
path = @"D:\ALL";
DirectoryInfo _dir = new DirectoryInfo(path);
_dir.CreateSubdirectory(city[i].Initial);
}
path = @"D:\ALL\" + city[i].Initial;
DirectoryInfo dir = new DirectoryInfo(path);
dir.CreateSubdirectory(city[i].Name);//创建城市目录
Console.WriteLine(city[i].Name + "目录创建完毕");//打印查看
}
catch (Exception e)
{
Console.WriteLine(e.Message + "T错误");
}
try
{
CreateScenicArray(city[i].Name.Replace("市", ""), path + @"\" + city[i].Name);
}
catch (Exception e)
{
Console.WriteLine(e.Message + "CreateALL错误");
}
}
}
static void Main(string[] args)
{
CreateALL();
}
}
}