有谁知道怎么调用淘宝API啊?有没有源码看看啊???急啊!!!
解决方案 »
- asp.net页面对excel操作的时候报错
- 怎样跟踪用户操作?记录日志?求思路!
- html格式文件转成word后图片问题
- Server.Transfer
- 怎样在TreeView每个节点后面加上添加删除修改
- ASP.NET生成DLL问题
- 关于网站广告
- 高分求解(在线等,解决立即给分.时间最快的有加分.):问题1:xp 个人版+sql2000 个人版+.net=报错. 问题2:在win2000server 中 setup打包文件
- 高手帮我看看我这个递归显示树菜单的函数有什么问题啊?不知道我有没有描述清楚,谢谢了
- 急问:在客户端,怎样能够得到DataGrid中隐藏列的值
- 求aspxGridView自带删除实现步骤 高手进
- 求助:关于Membership的自定义实现
http://wiki.isv.alisoft.com/index.php/%E8%B5%84%E6%BA%90using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;using System.Collections;
using System.Text;
using System.Net;
using System.IO;
using System.Xml;
public partial class _Default : System.Web.UI.Page
{
//用于页面显示,具体应用可以不处理 public string timestamps;
public string sipsign;
public string appkey;
public string apiname = "alisoft.validateUser";//接口调用名称
public string version="1.0";
public string messages; //end
protected void Page_Load(object sender, EventArgs e)
{
HttpRequest request = HttpContext.Current.Request;
//在软件应用中心跳转到ISV应用时的URL参数中取得,user_id、app_instance_id和token
string appUserId = request.Params["user_id"];
string appInstanceId = request.Params["app_instance_id"];
string appId = request.Params["app_id"]; //软件注册时获得
string token = request.Params["token"]; //每次点击生成不一样的token,并只有10秒钟有效 if (appInstanceId == null)
{
messages = "免登录失败,此为非法请求";
}
else
{
System.DateTime timestamp = System.DateTime.Now;//时间获得当前系统时间
appkey = appId;//接口调用需要的参数
timestamps = timestamp.ToString(); //sip_sign签名字段的生成,将CERT CODE和所有接口要传的参数进行组合,再将组装好的字符串进行md5加密后转成16进制后得到一个32位的密文
SortedList mySL = new SortedList();
mySL.Add("appInstanceId", appInstanceId);
mySL.Add("userId", appUserId);
mySL.Add("token", token);
mySL.Add("sip_appkey", appId);
mySL.Add("sip_timestamp", timestamp);
mySL.Add("sip_apiname", apiname);
mySL.Add("sip_version", version);
sipsign = Signature.DoSignature(mySL); //sip_sign生成END
//系统级参数拼装,包括sip_appkey、sip_apiname、sip_timestamp和sip_sign,sip_apiname是接口名这里举validateUser为例
string SIPdate = "sip_appkey=" + appId + "&sip_apiname=" + apiname + "&sip_timestamp=" + timestamp + "&sip_version="+version+"&sip_sign=" +sipsign;
//接口级参数拼装
string apidate = "&userId=" + appUserId + "&appInstanceId=" + appInstanceId + "&token=" + token; ASCIIEncoding encoding = new ASCIIEncoding();
byte[] postdata = encoding.GetBytes(SIPdate + apidate);//所有要传参数拼装
// Prepare web request...
//目前阿里软件的服务集成平台(SIP)的接口
//测试地址是:http://sipdev.alisoft.com/sip/rest,软件测试开发调用
//正式环境地址是:http://sip.alisoft.com/sip/rest,软件发布上线后调用。
//这里使用正式环境URL,测试环境使用http://sipdev.alisoft.com/sip/rest。 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();
// Send the data.
newStream.Write(postdata, 0, postdata.Length);
newStream.Close();
// Get response //以下内容为接口返回结果解析
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
string status = myResponse.Headers.Get("sip_status");//获得接口返回状态码 if (status != null)
{
//Sip返回结果为成功的情况
if ("9999".Equals(status))
{
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
string content = reader.ReadToEnd();
//解析接口返回值,这里选用XML格式的解析,接口默认返回是XML格式
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(content);
XmlNode xn = xmlDoc.SelectSingleNode("String");
XmlElement xe = (XmlElement)xn;
string result = xe.InnerText;
setMessage(result);//用于页面显示
}
//SIP返回错误信息解析,此处为了说明各返回值,ISV可不用处理这么详细
else
{
setMessage(status);//用于页面显示
}
}
} }
///<summary>
///根据传入的值,返回相应的接口返回结果
///
///</summary>
private void setMessage(String result)
{
switch (Int32.Parse(result))
{
case 1: messages = "您是订购者,免登录成功"; break; //订购者和使用者是有权使用的用户
case 0: messages = "您是使用者,免登录成功"; break;
case -1: messages = "免登录失败,错误信息:尚未订购该应用"; break;
case -2: messages = "免登录失败,错误信息:非法用户"; break;
case -3: messages = "免登录失败,错误信息:没有订购"; break;
case -4: messages = "免登录失败,错误信息:订阅了多个,不明确"; break;
case 1001: messages = "免登录失败,错误信息:签名无效"; break;
case 1002: messages = "免登录失败,错误信息:请求已过期"; break;
case 1004: messages = "免登录失败,错误信息:需要绑定用户"; break;
case 1005: messages = "免登录失败,错误信息:需要提供appid"; break;
case 1006: messages = "免登录失败,错误信息:需要提供服务名"; break;
case 1007: messages = "免登录失败,错误信息:需要提供签名"; break;
case 1008: messages = "免登录失败,错误信息:需要提供时间戳"; break;
case 1010: messages = "免登录失败,错误信息:无权访问服务"; break;
case 1011: messages = "免登录失败,错误信息:服务不存在"; break;
case 1012: messages = "免登录失败,错误信息:需要提供SessionId"; break;
case 1013: messages = "免登录失败,错误信息:需要提供用户名"; break;
case 1014: messages = "免登录失败,错误信息:回调服务不存在"; break;
case 1015: messages = "免登录失败,错误信息:AppKey不存在"; break;
case 1016: messages = "免登录失败,错误信息:服务次数超过限制"; break;
case 1017: messages = "免登录失败,错误信息:服务请求过于频繁"; break;
case 1018: messages = "免登录失败,错误信息:登录请求URL过长"; break;
case 1019: messages = "免登录失败,错误信息:ISP请求IP非法"; break;
case 1020: messages = "免登录失败,错误信息:请求参数值长度溢出"; break;
case 1021: messages = "免登录失败,错误信息:isp处理请求失败"; break;
default: messages = "免登录失败,错误信息:未知异常"; break;
}
} }