- 以下是 HTTP POST 请求和响应示例。所显示的占位符需替换为实际值。
- POST /web/FileService.asmx/DoAction HTTP/1.1
- Host: www.***.com
- Content-Type: application/x-www-form-urlencoded
- Content-Length: length
- proxyId=string&action=string
有网站,如www.***.com上有一个webservice接口,比如DoAction,客户端发送请求之后,返回跟某个ID相关的一些信息,比如文件列表等,客户端发送代码,解析代码如下:
网站支持httppost方法,如上的代码,返回结果实例如下,
- HTTP/1.1 200 OK
- Content-Type: text/xml; charset=utf-8
- Content-Length: length
- <?xml version="1.0" encoding="utf-8"?>
- <string xmlns="http://www.***.com/">string</string>
在客户端(web)上发送代码:
- string service = "http://www.***.com/web/FileService.asmx/DoAction";
- string contenttype = "application/x-www-form-urlencoded";//更网站该方法支持的类型要一致
- //根据接口,写参数
- string para = "proxyId=123456";
- para += "&action=*************";
- //发送请求
- HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(service);
- myRequest.Method = "POST";
- myRequest.ContentType = contenttype;
- myRequest.ContentLength = para.Length;
- Stream newStream = myRequest.GetRequestStream();
- // Send the data.
- ASCIIEncoding encoding = new ASCIIEncoding();
- byte[] postdata = encoding.GetBytes(para);
- newStream.Write(postdata, 0, para.Length);
- newStream.Close();
- // Get response
- HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
- StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
- string content = reader.ReadToEnd();//得到结果
上面的content就是返回的字符串结果,可能是这样子的:
- <string xmln="www.***.com">
- <WSResponse>
- <Result>0</Result>
- <Data>
- <filelist>
- <Item ID=/"1/" URL=/"******/"/>
- <Item ID=/"2/" URL=/"******/"/>
- </filelist>
- </Data>
- </WSResponse>
- </string>
然后利用XmlDocument等解析结果:
- //解析接口返回值,这里选用XML格式的解析
- XmlDocument xmlDoc = new XmlDocument();
- string xmlrespons = "";
- xmlDoc.LoadXml(content);
- XmlNamespaceManager nsmgr = new XmlNamespaceManager(xmlDoc.NameTable);
- nsmgr.AddNamespace("", "http://ws.95013.com/");//这个要跟string后面的xmln的字符串一致
- XmlElement root = xmlDoc.DocumentElement;
- xmlrespons = root.InnerText;
- byte[] byteSource = Encoding.GetEncoding("utf-8").GetBytes(xmlrespons);
- MemoryStream ms = new MemoryStream(byteSource);
- XmlTextReader xmlreader=new XmlTextReader(ms);
- string sname,svalue;
- while(xmlreader.Read())
- {
- if(xmlreader.NodeType == XmlNodeType.Element)
- {
- if ("Item".Equals(xmlreader.Name))
- {
- while (xmlreader.MoveToNextAttribute())
- {
- switch (xmlreader.Name)
- {
- case "ID":
- //做操作
- string str1=xmlreader.Value;
- break;
- case "URL":
- string str2= xmlreader.Value;
- break;
- ... default:
- break;
- }
- }
- xmlreader.MoveToElement();//读完一个几点后要让指针后移
- }
- }
- if ("Result".Equals(xmlreader.Name))
- {//对resault结点的解析
- svalue = xmlreader.ReadString();
- ...
- }
- }
- //解析完了将释放变量
- xmlreader.Close();
- ms.Close();
本文展示了如何使用C#发送HTTP POST请求到服务器,并解析返回的XML格式字符串。通过设置请求头,传递参数,获取响应,然后利用XmlDocument解析XML数据,提取所需信息。

818

被折叠的 条评论
为什么被折叠?



