Я пытаюсь получить документ XML с сервера и сохранить его локально в виде строки. В настольных .Net мне не нужно, я просто сделал:
string xmlFilePath = "https://myip/";
XDocument xDoc = XDocument.Load(xmlFilePath);
Однако на WP7 это возвращает:
Cannot open 'serveraddress'. The Uri parameter must be a relative path pointing to content inside the Silverlight application's XAP package. If you need to load content from an arbitrary Uri, please see the documentation on Loading XML content using WebClient/HttpWebRequest.
Поэтому я решил использовать пример WebClient / HttpWebRequest из здесь , но теперь он возвращает:
The remote server returned an error: NotFound.
Это потому, что XML - это путь https? Или потому что мой путь не заканчивается на .XML? Как я узнаю? Спасибо за любую помощь.
Вот код:
public partial class MainPage : PhoneApplicationPage
{
WebClient client = new WebClient();
string baseUri = "https://myip:myport/service";
public MainPage()
{
InitializeComponent();
client.DownloadStringCompleted +=
new DownloadStringCompletedEventHandler(
client_DownloadStringCompleted);
}
private void Button1_Click(object sender, RoutedEventArgs e)
{
client.DownloadStringAsync
(new Uri(baseUri));
}
void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error == null)
resultBlock.Text = "Using WebClient: " + e.Result;
else
resultBlock.Text = e.Error.Message;
}
private void Button2_Click(object sender, RoutedEventArgs e)
{
HttpWebRequest request =
(HttpWebRequest)HttpWebRequest.Create(new Uri(baseUri));
request.BeginGetResponse(new AsyncCallback(ReadCallback),
request);
}
private void ReadCallback(IAsyncResult asynchronousResult)
{
HttpWebRequest request =
(HttpWebRequest)asynchronousResult.AsyncState;
HttpWebResponse response =
(HttpWebResponse)request.EndGetResponse(asynchronousResult);
using (StreamReader streamReader1 =
new StreamReader(response.GetResponseStream()))
{
string resultString = streamReader1.ReadToEnd();
resultBlock.Text = "Using HttpWebRequest: " + resultString;
}
}
}