最近在给五十一中学开发项目,其中有点要求比较特殊(但是很合理),客户要求教师登陆账号跟温州中学现有的账号做个统一,这样的话,客户在五十一中这边网站登陆之后,也可以使用温州中学的教学资源,真的是一举两得,技术上其实也不难,就是看你怎么个操作法了。在温州中学的谢老师的帮助下,顺利的开通了API整合接口,返回一个带用户信息的XML文件格式,我们这边只需要负责解决接收XML文件的问题了,下面是具体的代码,在查阅代码的时候,大家有什么问题欢迎与我联系。
/*=================================================================
 * 版权:温州市捷点信息技术有限公司 2005-2009 All Rights Reserved.
 * 电话:0577-86668455 0577-86665455 0577-86663433
 * 网址:http://www.cnvp.com.cn
 * 作者:Apollo
 * 邮件:Apollo_1314@HotMail.Com
===================================================================*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MSXML2;

namespace NetSchool.Common
{
    /// <summary>
    /// 远程提交表单
    /// string rn = "";
    /// string url = http://localhost/api/checklogin.asp;
    /// XMLHTTP x = new XMLHTTP(); //创建设xmlhttp对像
    /// XMLHTTP.ST_Param st = new XMLHTTP.ST_Param(); //创建参数数组//
    /// st.Parameters = string.Format("UserName={0}&UserPass={1}", "admin", "admin");
    /// st.Url = url;
    /// st.Uid = "";//账号
    /// st.Pwd = "";//密码
    /// rn = x.SendCommand(XMLHTTP.SendMethod.GET, st); //获取返回信息
    /// x.Dispose();
    /// Response.Write(rn);
    /// </summary>
    public class XMLHTTP
    {
        #region XmlHttp发送
        private XMLHTTPClass xml;
        private bool _alreadyDispose = false;

        public ST_Param Parameters;
        public enum SendMethod : int
        {
            POST, GET
        }
        public struct ST_Param
        {
            public string Url;
            public string Parameters;
            public string Uid;
            public string Pwd;
        }
        /// <summary>
        /// 发送数据
        /// </summary>
        /// <param name="method">发送方式</param>
        /// <param name="p">数据</param>
        /// <returns>STRING</returns>
        public virtual string SendCommand(SendMethod method, ST_Param p)
        {
            if (p.Url == null || p.Url == "") return null;
            if (method == SendMethod.POST)
            {
                try
                {
                    xml.open("POST", p.Url, false, p.Uid, p.Pwd);
                    xml.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                    xml.send(UrlEncoding(p.Parameters));
                    if (xml.status == 200)
                    {
                        return xml.responseText;
                    }
                    else
                    {
                        return xml.status.ToString();
                    }
                }
                catch (Exception E)
                {
                    return E.Message.ToString();
                }
            }
            else if (method == SendMethod.GET)
            {
                xml.open("GET", p.Url + "?" + UrlEncoding(p.Parameters), false, p.Uid, p.Pwd);
                xml.send(null);
                return System.Text.Encoding.Default.GetString((byte[])xml.responseBody);
            }
            return null;
        }
        #endregion
        #region 构造与释构
        public XMLHTTP()
        {
            xml = new XMLHTTPClass();
        }
        ~XMLHTTP()
        {
            Dispose();
        }
        protected virtual void Dispose(bool isDisposing)
        {
            if (_alreadyDispose) return;
            if (isDisposing)
            {
                if (xml != null)
                {
                    xml = null;
                }
            }
            _alreadyDispose = true;
        }
        #endregion
        #region IDisposable 成员
        public void Dispose()
        {
            Dispose(true);
            GC.SuppressFinalize(this);
        }
        #endregion
        public string UrlEncoding(string str)
        {
            byte[] bytes = System.Text.Encoding.ASCII.GetBytes(str);
            return System.Text.Encoding.ASCII.GetString(bytes).ToString();
        }
    }
}