前段时间客户有一个需求,给手机发短信,接口是客户提供的,是java做的一个servlet,只给一个servlet地址,要求发一段xml过去。当然这个xml是包含了手机及短信信息的,当然还有一些用户账户及密码信息。
其实这个是用HttpWebRequest提交信息的原理,代码如下:
//构建xml
StringBuilder requestData = new StringBuilder();
requestData.Append("<?xml version=/"1.0/" encoding=/"GBK/" ?>");
requestData.Append("<REQUEST><TRANS_TYPE>SMS_DOWN_REQUEST</TRANS_TYPE>");
requestData.Append("<SP_ID>" + spId + "</SP_ID>");
requestData.Append("<PASSWORD>" + password + "</PASSWORD>");
requestData.Append("<SEQ_NUM>00100003</SEQ_NUM><MOBILE>" + mobile + "</MOBILE>");
requestData.Append("<CONTENT><![CDATA[" + content + "]]></CONTENT>");
requestData.Append("<DATETIME>" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "</DATETIME>");
requestData.Append("<PRIORITY>2</PRIORITY><EXTEND_CODE>999</EXTEND_CODE></REQUEST>");
//转成字节,对方要求用GBK转换
Byte[] buffer = Encoding.GetEncoding("GBK").GetBytes(requestData.ToString());
//得到request流,将内容写进流中,这里的requestUrl就是对方给的地址。
Uri uri = new Uri(requestUrl);
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
request.Method = "POST";
request.ContentLength = buffer.Length;
Stream reqStream = request.GetRequestStream();
reqStream.Write(buffer, 0, buffer.Length);
reqStream.Flush();
reqStream.Close();
//得到响应的内容,这一步相当重要,要不然内容提交不过去。
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader sr = new StreamReader(response.GetResponseStream(),Encoding.GetEncoding("GBK"));
string resXml = sr.ReadToEnd();
sr.Close();
基本的思路就是这样的。