下面是C#中使用HttpPost调用WebService的方法的完整攻略。
步骤一:添加引用和命名空间
在使用HttpPost调用WebService之前,我们需要添加相应的引用和命名空间。在Visual Studio中,右键单击项目名称,选择“添加引用”,添加System.Net和System.Web.Services引用。在代码文件中,我们需要使用以下命名空间:
using System.Net;
using System.IO;
using System.Text;
using System.Web.Services;
步骤二:定义WebService参数和HttpPost请求
接下来,我们需要定义WebService参数和HttpPost请求。例如,我们调用的WebService是http://example.com/Service.asmx,WebService的方法名为“GetUserInfo”,参数为“id”。
// WebService参数
string serviceUrl = "http://example.com/Service.asmx";
string methodName = "GetUserInfo";
string id = "1234";
// HttpPost请求
string postData = string.Format("id={0}", id);
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
WebRequest request = WebRequest.Create(serviceUrl + "/" + methodName);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
以上代码使用了Encoding类将参数转换成UTF-8格式字节数组,并使用WebRequest类创建HttpPost请求,并设置ContentType和ContentLength属性。
步骤三:发送HttpPost请求并获取响应数据
最后,我们需要发送HttpPost请求,并获取WebService返回的响应数据。可以使用WebResponse类获取响应数据,并将数据转换成字符串。
// 发送HttpPost请求并获取响应数据
WebResponse response = request.GetResponse();
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
Console.WriteLine(responseFromServer);
reader.Close();
dataStream.Close();
response.Close();
注意,在发送HttpPost请求时,需要将参数通过请求体发送给WebService。如果请求成功,我们应该能够在控制台中看到WebService返回的数据。
完整示例一:调用返回Xml格式的WebService
下面是一个完整示例,调用返回Xml格式数据的WebService。该WebService的参数为“city”,返回指定城市的天气数据。
using System;
using System.IO;
using System.Net;
using System.Text;
using System.Xml;
namespace PostWebServiceDemo
{
class Program
{
static void Main(string[] args)
{
// WebService参数
string serviceUrl = "http://ws.webxml.com.cn/WebServices/WeatherWebService.asmx";
string methodName = "getWeatherbyCityName";
string city = "北京";
// HttpPost请求
string postData = string.Format("theCityName={0}", city);
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
WebRequest request = WebRequest.Create(serviceUrl + "/" + methodName);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
// 发送HttpPost请求并获取响应数据
WebResponse response = request.GetResponse();
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
// 将Xml格式数据转换成字符串
XmlDocument doc = new XmlDocument();
doc.LoadXml(responseFromServer);
XmlNodeList nodes = doc.GetElementsByTagName("string");
string result = nodes[0].InnerText;
// 输出结果
Console.WriteLine(result);
reader.Close();
dataStream.Close();
response.Close();
}
}
}
在以上示例中,我们使用了XmlDocument类将WebService返回的Xml格式数据转换成字符串,并输出到控制台。
完整示例二:调用返回Json格式的WebService
下面是另一个完整示例,调用返回Json格式数据的WebService。该WebService的参数为“isbn”,返回指定ISBN号的图书信息。
using System;
using System.IO;
using System.Net;
using System.Text;
using Newtonsoft.Json.Linq;
namespace PostWebServiceDemo
{
class Program
{
static void Main(string[] args)
{
// WebService参数
string serviceUrl = "https://api.douban.com/v2/book/isbn/";
string isbn = "9787111111111";
// HttpPost请求
WebRequest request = WebRequest.Create(serviceUrl + isbn);
request.Method = "GET";
// 发送HttpPost请求并获取响应数据
WebResponse response = request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
// 将Json格式数据转换成字符串
JObject json = JObject.Parse(responseFromServer);
string title = json["title"].ToString();
string author = json["author"].ToString();
// 输出结果
Console.WriteLine("Title: " + title);
Console.WriteLine("Author: " + author);
reader.Close();
dataStream.Close();
response.Close();
}
}
}
在以上示例中,我们使用了Newtonsoft.Json.Linq类将WebService返回的Json格式数据转换成字符串,并输出到控制台。
以上就是C#中使用HttpPost调用WebService的方法的完整攻略,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中使用HttpPost调用WebService的方法 - Python技术站