我正在連接到一個Web服務以將某些數據作爲xml返回。連接工作正常,它返回服務的xml數據。從Web服務中加載XML
var remoteURL = EveApiUrl;
var postData = string.Format("userID={0}&apikey={1}&characterID={2}", UserId, ApiKey, CharacterId);
var request = (HttpWebRequest)WebRequest.Create(remoteURL);
request.Method = "POST";
request.ContentLength = postData.Length;
request.ContentType = "application/x-www-form-urlencoded";
// Setup a stream to write the HTTP "POST" data
var WebEncoding = new ASCIIEncoding();
var byte1 = WebEncoding.GetBytes(postData);
var newStream = request.GetRequestStream();
newStream.Write(byte1, 0, byte1.Length);
newStream.Close();
var response = (HttpWebResponse)request.GetResponse();
var receiveStream = response.GetResponseStream();
var readStream = new StreamReader(receiveStream, Encoding.UTF8);
var webdata = readStream.ReadToEnd();
Console.WriteLine(webdata);
這會打印出來自服務的xml。我也可以將xml保存爲xml文件,如下所示;
TextWriter writer = new StreamWriter(@"C:\Projects\TrainingSkills.xml");
writer.WriteLine(webdata);
writer.Close();
現在我可以加載文件作爲一個XDocument來執行查詢就像這樣;
var data = XDocument.Load(@"C:\Projects\TrainingSkills.xml");
我的問題是,我不想保存該文件,然後再次加載它。當我嘗試直接從流中加載時,我得到一個異常,路徑中的非法字符。我不知道發生了什麼,如果我可以加載相同的XML作爲文本文件,爲什麼我不能加載它作爲一個流。
xml是這樣的;
<?xml version='1.0' encoding='UTF-8'?>
<eveapi version="2">
<currentTime>2010-04-28 17:58:27</currentTime>
<result>
<currentTQTime offset="1">2010-04-28 17:58:28</currentTQTime>
<trainingEndTime>2010-04-29 02:48:59</trainingEndTime>
<trainingStartTime>2010-04-28 00:56:42</trainingStartTime>
<trainingTypeID>3386</trainingTypeID>
<trainingStartSP>8000</trainingStartSP>
<trainingDestinationSP>45255</trainingDestinationSP>
<trainingToLevel>4</trainingToLevel>
<skillInTraining>1</skillInTraining>
</result>
<cachedUntil>2010-04-28 18:58:27</cachedUntil>
</eveapi>
感謝您的幫助!
@Lukasz,只是一個提示:如果你打算在生產中使用這個,拋出一些錯誤處理代碼並確保關閉連接和流。 – 2010-04-28 18:25:59