在.NET C#中将XML发布到Web服务并接收响应 [英] Posting XML to Web service in .NET C# and recieving response
本文介绍了在.NET C#中将XML发布到Web服务并接收响应的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个XML请求文档,我将其发布到WebService。
我的项目已上传到我的Web服务器上。网络服务提供商仅允许访问我的网络服务器IP。
但是当我请求响应时我收到错误''服务器错误 - 500 - 你不是允许访问系统 - //这里显示我的客户端机器的IP,我从中访问该页面//
代码如下。
请帮忙。
受保护 void Page_Load( object sender,EventArgs e)
{
WebRequest req = null ;
WebResponse rsp = null ;
尝试
{
string fileName = Server.MapPath(< span class =code-string> 〜\\HotelValuedAvailRQ.xml);
string uri = http:// 212.170.239.71/appservices/http/FrontendService跨度>;
req = WebRequest.Create(uri);
// req.Proxy = WebProxy.GetDefaultProxy(); //启用使用代理
req.Method = POST; // 发布方法
req.ContentType = text / xml; // 内容类型
// 使用基于文本的编写器包装请求流
StreamWriter writer = new StreamWriter( req.GetRequestStream());
// 将XML文本写入流
writer.WriteLine(< span class =code-keyword> this .GetTextFromXMLFile(fileName));
writer.Close();
// 将数据发送到网络服务器
rsp = req.GetResponse( ); // 我在这里收到错误
StreamReader sr = new StreamReader(rsp.GetResponseStream());
string result = sr.ReadToEnd();
sr.Close();
Response.Write(result);
}
catch (WebException webEx)
{
Response.Write(webEx.Message.ToString ());
Response.Write(webEx.StackTrace.ToString());
}
catch (例外情况)
{
Response.Write(ex.Message.ToString());
Response.Write(ex.StackTrace.ToString());
}
最后
{
if (req != null )req.GetRequestStream()。Close();
if (rsp!= null )rsp.GetResponseStream()。Close();
}
}
// 从本地系统读取xml数据的函数
/// < < span class =code-summarycomment>摘要 >
// / 从文件
中读取XML数据 /// < / summary >
/// < param name =file > < / param >
/// < 返回 > 以XML字符串格式返回文件内容< / returns >
private string GetTextFromXMLFile( string file )
{
StreamReader reader = new StreamReader(file);
string ret = reader.ReadToEnd();
reader.Close();
返回 ret;
}
解决方案
显然,您的服务器未配置为允许您访问。对代码进行任何更改都不会更改有关您访问服务器的权限的消息。如果你怀疑这一点,写一个传递int的服务,看看会发生什么。
req.ContentType = text / xml; // 内容类型
req.Credentials = CredentialCache.DefaultNetworkCredentials;
rsp =(HttpWebResponse)req.GetResponse();
这应该有用!!
I have a XML request document which I am Posting to the WebService.
I have my project uploaded on my web server. The webservice provider has allowed access to my web server IP only.
But I am getting error when I am requesting the response ''Server Error - 500 - You are not allowed to access the system - //here it is showing my client machine''s IP from which I am accessing the page//
The code is given below.
Please help.
protected void Page_Load(object sender, EventArgs e)
{
WebRequest req = null;
WebResponse rsp = null;
try
{
string fileName = Server.MapPath("~\\HotelValuedAvailRQ.xml");
string uri = "http://212.170.239.71/appservices/http/FrontendService";
req = WebRequest.Create(uri);
//req.Proxy = WebProxy.GetDefaultProxy(); // Enable if using proxy
req.Method = "POST"; // Post method
req.ContentType = "text/xml"; // content type
// Wrap the request stream with a text-based writer
StreamWriter writer = new StreamWriter(req.GetRequestStream());
// Write the XML text into the stream
writer.WriteLine(this.GetTextFromXMLFile(fileName));
writer.Close();
// Send the data to the webserver
rsp = req.GetResponse(); //I am getting error over here
StreamReader sr = new StreamReader(rsp.GetResponseStream());
string result = sr.ReadToEnd();
sr.Close();
Response.Write(result);
}
catch (WebException webEx)
{
Response.Write(webEx.Message.ToString());
Response.Write(webEx.StackTrace.ToString());
}
catch (Exception ex)
{
Response.Write(ex.Message.ToString());
Response.Write(ex.StackTrace.ToString());
}
finally
{
if (req != null) req.GetRequestStream().Close();
if (rsp != null) rsp.GetResponseStream().Close();
}
}
//Function to read xml data from local system
/// <summary>
/// Read XML data from file
/// </summary>
/// <param name="file"></param>
/// <returns>returns file content in XML string format</returns>
private string GetTextFromXMLFile(string file)
{
StreamReader reader = new StreamReader(file);
string ret = reader.ReadToEnd();
reader.Close();
return ret;
}
解决方案
Obviously your server is NOT configured to give you access. No change to your code will change a message that is about your rights to access the server. If you doubt this, write a service that passes an int, and see what happens.
req.ContentType = "text/xml"; // content type req.Credentials = CredentialCache.DefaultNetworkCredentials;
rsp = (HttpWebResponse) req.GetResponse();
This should work!!
这篇关于在.NET C#中将XML发布到Web服务并接收响应的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文