阿里API 调用类

最近做Alisoft的一些isv软件,发现除了官方论坛给的一些技术支持外,网上的资料甚少,官方的也有些小BUG。于是自己写了一个API调用类,写的不是很好,但测试了基本没什么BUG;如果大家有更好的这方面资料,能一起拿来学习交流就更好了。

注意:传参的时候必须按照字母顺序传入,先按顺序传参数名,再对应着传值。

 

using  System;
using  System.Collections.Generic;
using  System.Text;
using  System.Collections;
using  System.Web;
using  System.Security.Cryptography;
using  System.IO;
using  System.Net;
using  System.Xml;
namespace  AlisoftApi
ExpandedBlockStart.gifContractedBlock.gif
{
    
public class Alirest
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
ContractedSubBlock.gifExpandedSubBlockStart.gif        
属性#region 属性  
        
protected string result;
        
private string posturl;
        
private string code;
        
private string appid;
        
private string sign;
        
private string _sign;
        
private Int16 statu;
        
private string strxml;
ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
        
/// 加密前
        
/// </summary>

        public string Sign1
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
ExpandedSubBlockStart.gifContractedSubBlock.gif            
get return _sign; }
ExpandedSubBlockStart.gifContractedSubBlock.gif            
set { _sign = value; }
        }

ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
        
/// 读取返回的xml
        
/// </summary>

        public string Strxml
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
ExpandedSubBlockStart.gifContractedSubBlock.gif            
get return strxml; }
        }

ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
        
/// 程序状态,1调用成功,2需要绑定用户,-1调用失败
        
/// </summary>

        public Int16 Statu
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
ExpandedSubBlockStart.gifContractedSubBlock.gif            
get return statu; }
ExpandedSubBlockStart.gifContractedSubBlock.gif            
set { statu = value; }
        }

ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
        
/// 设置或读取用户签名
        
/// </summary>

        public string Sign
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
ExpandedSubBlockStart.gifContractedSubBlock.gif            
get return sign; }
ExpandedSubBlockStart.gifContractedSubBlock.gif            
set { sign = value; }
        }

ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
        
/// 设置或读取appid
        
/// </summary>

        public string Appid
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
ExpandedSubBlockStart.gifContractedSubBlock.gif            
get return appid; }
ExpandedSubBlockStart.gifContractedSubBlock.gif            
set { appid = value; }
        }

ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
        
/// 设置或读取认证码
        
/// </summary>

        public string Code
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
ExpandedSubBlockStart.gifContractedSubBlock.gif            
get return code; }
ExpandedSubBlockStart.gifContractedSubBlock.gif            
set { code = value; }
        }

ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
        
/// 设置或读取请求参数url
        
/// </summary>

        public string Posturl
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
ExpandedSubBlockStart.gifContractedSubBlock.gif            
get return posturl; }
ExpandedSubBlockStart.gifContractedSubBlock.gif            
set { posturl = value; }
        }

ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
        
/// 程序返回结果
        
/// </summary>

        public string Result
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
ExpandedSubBlockStart.gifContractedSubBlock.gif            
get return result; }
ExpandedSubBlockStart.gifContractedSubBlock.gif            
set { result = value; }
        }

        
#endregion

ContractedSubBlock.gifExpandedSubBlockStart.gif        
构造方法#region 构造方法
        
public Alirest(string _appid, string _code, string[] strpar)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            Appid 
= _appid;
            Code 
= _code;
            SortedList mySL 
= new SortedList();
            
for (int i = 0; i < strpar.Length / 2; i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                mySL.Add(strpar[i], strpar[(strpar.Length 
/ 2+ i]);
            }

            StringBuilder signSb 
= new StringBuilder(code);
            
foreach (DictionaryEntry Item in mySL)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                signSb.Append(Item.Key.ToString());
                signSb.Append(Item.Value.ToString());
            }

            Sign1 
= HttpUtility.UrlDecode(signSb.ToString(), Encoding.Default);
            Sign 
= GetMd5(HttpUtility.UrlDecode(signSb.ToString(), Encoding.Default));
            StringBuilder posturlSb 
= new StringBuilder("sip_sign="+Sign);
            
for (int i = 0; i < strpar.Length / 2; i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                posturlSb.Append(
"&");
                posturlSb.Append(strpar[i] 
+ "="+ strpar[(strpar.Length / 2+ i]);
            }

            Posturl 
= HttpUtility.UrlDecode(posturlSb.ToString());
            GetUrlContent();
        }
   
        
#endregion

ContractedSubBlock.gifExpandedSubBlockStart.gif        
获取返回信息#region 获取返回信息
ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
        
/// 获取返回信息
        
/// </summary>

        protected void GetUrlContent()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            ASCIIEncoding encoding 
= new ASCIIEncoding();
            
byte[] postdata = encoding.GetBytes(Posturl);
            HttpWebRequest myRequest 
= (HttpWebRequest)WebRequest.Create("http://sip.alisoft.com/sip/rest");
            myRequest.Method 
= "POST";
            myRequest.ContentType 
= "application/x-www-form-urlencoded";
            myRequest.ContentLength 
= postdata.Length;
            Stream newStream 
= myRequest.GetRequestStream();
            newStream.Write(postdata, 
0, postdata.Length);
            newStream.Close();
            HttpWebResponse myResponse 
= (HttpWebResponse)myRequest.GetResponse();
            StreamReader reader 
= new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
            strxml
=reader.ReadToEnd();
        }

        
#endregion

ContractedSubBlock.gifExpandedSubBlockStart.gif        
获取XML#region 获取XML
ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
        
/// 获取XML
        
/// </summary>
        
/// <param name="XmlRead">要读取的xml节点内容StringResult/result</param>
        
/// <returns></returns>

        public void GetXml(string XmlRead)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            XmlDocument xmlDoc 
= new XmlDocument();
            xmlDoc.LoadXml(Strxml);
            
try
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                
if (Strxml.Contains("http://"))
ExpandedSubBlockStart.gifContractedSubBlock.gif                
{
                    XmlNode xncode 
= xmlDoc.SelectSingleNode("error_rsp/url");
                    
string result = xmlDoc.SelectSingleNode("error_rsp/url").InnerText;
                    Result 
= result;
                    Statu 
= 2;
                }

                
else
ExpandedSubBlockStart.gifContractedSubBlock.gif                
{
                    XmlNode xncode 
= xmlDoc.SelectSingleNode(XmlRead);
                    
string result = xmlDoc.SelectSingleNode(XmlRead).InnerText;
                    Statu 
= 1;
                    Result 
= result;
                }

            }

            
catch
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                Statu 
= -1;
            }

        }

        
#endregion

ContractedSubBlock.gifExpandedSubBlockStart.gif        
GetMd5#region GetMd5
ExpandedSubBlockStart.gifContractedSubBlock.gif            
/**//// <summary>
            
/// 生成MD5
            
/// </summary>
            
/// <param name="sipsign"></param>
            
/// <returns></returns>

        protected static string GetMd5(string sipsign)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            MD5CryptoServiceProvider md5 
= new MD5CryptoServiceProvider();
            
return BitConverter.ToString(md5.ComputeHash(Encoding.UTF8.GetBytes(sipsign))).Replace("-""");
        }

        
#endregion

    }

}
// 前台调用代码
     protected   void  Button3_Click( object  sender, EventArgs e)
ExpandedBlockStart.gifContractedBlock.gif    
{        
ExpandedSubBlockStart.gifContractedSubBlock.gif         
string[] par ={"domainid","sip_apiname" ,"sip_appkey" ,"sip_timestamp" ,"userid" , 
             
"3""alisoft.udb.getDomainLoginId" ,  "11111" ,  DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") , TextBox2.Text }
;
         Alirest ali 
= new Alirest("11111""-----------------------", par);
        ali.GetXml(
"StringResult/result");
        
if (ali.Statu == 1)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            TextBox3.Text
=ali.Result;
        }

        
else if (ali.Statu == 2)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            Response.Redirect(ali.Result);
        }

        
else
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            TextBox3.Text 
= ali.Strxml;
        }

        
    }

转载于:https://www.cnblogs.com/wangjianshuang/archive/2008/11/27/1342708.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值