我有一个web服务,我需要在.net应用程序中调用。链接看起来像这样。
http://www.contoso.com/student?id=12345
只有当它这样调用时才会起作用。对于其余的这个我没有访问权限。即如果我在没有查询字符串的浏览器上调用它,它将无法工作。但是使用查询字符串它将返回XML数据。
现在,当我在.net应用程序中调用它时,它无效?
如何在.NET应用程序中调用它?
普通Web服务导入方法不起作用,因为它需要一个带有值的查询字符串,我们无法访问没有查询字符串的链接。
答案 0 :(得分:3)
您目前是如何尝试下载的?
一种非常简单的方法是使用HttpWebRequest和HttpWebResponse类;
public XmlDocument GetStudentXml(int studentId)
{
XmlDocument targetXml = new XmlDocument();
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(String.Format("http://www.contoso.com/student?id={0}", studentId));
webRequest.Credentials = System.Net.CredentialCache.DefaultCredentials;
webRequest.Accept = "text/xml";
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
using (Stream responseStream = webResponse.GetResponseStream())
{
XmlTextReader reader = new XmlTextReader(responseStream);
targetXml.Load(reader);
reader.Close();
}
webResponse.Close();
return targetXml;
}
此方法只是创建一个HttpWebRequest,使用URL(通过String.Format以附加学生ID),一些Windows凭据和预期的内容类型对其进行初始化。
然后通过GetResponse方法调用远程地址。然后将响应加载到流中,并使用XmlTextReader将响应流中的Xml数据加载到XmlDocument中,然后将其返回给调用者。
您还可以使用WebClient和XDocument来实现同样的目标:
string url = String.Format("http://www.contoso.com/student?id={0}", studentId);
string remoteXml;
using (var webClient = new WebClient())
{
remoteXml = webClient.DownloadString(url);
}
XDocument doc = XDocument.Parse(remoteXml);