我看了很多关于SO的问题。 所有人都在询问如何将XML发送到Web服务。在我的应用程序中 IN 对其进行测试时,我的POST和GET都可以正常工作。但是当我从第三方应用程序,邮递员,谷歌等发送请求时,却无法正常工作...授权不是问题。我不知道是什么。
这是我创建的用于测试应用程序的额外页面:(显然,此代码中没有错误,因为一旦打开此页面,web-service.aspx便会工作并创建一个csv文件)
protected void Page_Load(object sender, EventArgs e)
{
string requestXML = ReadXmlFile(); // this reads a test xml file
Uri rateRequestURI = new Uri("http://www.myurl.com/web-service.aspx");
string postData = "rateRequest=" + HttpUtility.UrlEncode(requestXML.ToString());
byte[] postBuffer = Encoding.UTF8.GetBytes(postData);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(rateRequestURI);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = postBuffer.Length;
request.Method = "POST";
request.Timeout = 20000;
request.KeepAlive = true;
try
{
Stream requestStream = request.GetRequestStream();
requestStream.Write(postBuffer, 0, postBuffer.Length);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
requestStream = response.GetResponseStream();
// Open the stream using a StreamReader for easy access.
StreamReader reader = new StreamReader(requestStream);
// Read the content.
string responseFromServer = reader.ReadToEnd();
// parse response
XmlDocument xmlRequest = new XmlDocument();
xmlRequest.LoadXml(HttpUtility.UrlDecode(responseFromServer).Replace("&", "&am p;"));
XmlNodeList responseStatusCodes = xmlRequest.GetElementsByTagName("StatusCode");
lblMessage.Text = "<b>Status: </b>" + responseStatusCodes.Item(0).SelectSingleNode("@Code").InnerText;
lblMessage.Text += "<p></p>";
lblMessage.Text += "<b>Message: </b>" + responseStatusCodes.Item(0).SelectSingleNode("Message").InnerText;
}
catch { lblMessage.Text = "Request timed-out"; }
}