大众点评api接口 asp.net实例
2013-11-25 13:51
369 查看
using System;
using System.Collections;
using System.IO;
using System.Net;
using System.Security.Cryptography;
using System.Text;
using System.Web;
namespace dianping_.net_samples
{
class Program
{
static void Main(string[] args)
{
//请替换AppKey以及Secret
string appKey = "612597898";
string secret = "c1891e179c394bb4bb09cbfaf00d242b";
string value = "";
string queryString = "";
//准备参数
Hashtable ht = new Hashtable();
ht.Add("format", "json");
ht.Add("city", "北京");
ht.Add("region", "海淀区");
ht.Add("category", "火锅");
ht.Add("has_coupon", "1");
ht.Add("sort", "2");
ht.Add("limit", "1");
//参数按照参数名排序
ArrayList akeys = new ArrayList(ht.Keys);
akeys.Sort();
//拼接字符串
foreach (string skey in akeys)
{
value += skey + ht[skey].ToString();
queryString += "&" + skey + "=" + Utf8Encode(ht[skey].ToString());
}
StringBuilder sb = new StringBuilder();
sb.Append(appKey);
sb.Append(value);
sb.Append(secret);
value = sb.ToString();
string url = "http://api.dianping.com/v1/business/find_businesses?appkey=" + appKey + "&sign=" + SHA1(value) + queryString;
int status = 0;
Console.WriteLine(url);
Console.WriteLine(RequestUrl(url, out status));
Console.ReadLine();
}
/// <summary>
/// URL请求
/// </summary>
/// <param name="url">URL地址</param>
/// <param name="status">URL请求响应状态码</param>
/// <returns>请求结果</returns>
public static string RequestUrl(string url, out int status)
{
string result = null;
status = 0;
HttpWebResponse response = null;
try
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
response = (HttpWebResponse)request.GetResponse();
Encoding responseEncoding = Encoding.GetEncoding(response.CharacterSet);
using (StreamReader sr = new StreamReader(response.GetResponseStream(), responseEncoding))
{
result = sr.ReadToEnd();
}
status = (int)response.StatusCode;
}
catch (WebException wexc1)
{
// any statusCode other than 200 gets caught here
if (wexc1.Status == WebExceptionStatus.ProtocolError)
{
// can also get the decription:
// ((HttpWebResponse)wexc1.Response).StatusDescription;
status = (int)((HttpWebResponse)wexc1.Response).StatusCode;
}
}
finally
{
if (response != null)
response.Close();
}
return result;
}
/// <summary>
/// URL请求参数UTF8编码
/// </summary>
/// <param name="value">源字符串</param>
/// <returns>编码后的字符串</returns>
private static string Utf8Encode(string value)
{
return HttpUtility.UrlEncode(value, System.Text.Encoding.UTF8);
}
/// <summary>
/// SHA1加密字符串
/// </summary>
/// <param name="source">源字符串</param>
/// <returns>加密后的字符串</returns>
public static string SHA1(string source)
{
byte[] value = Encoding.UTF8.GetBytes(source);
SHA1 sha = new SHA1CryptoServiceProvider();
byte[] result = sha.ComputeHash(value);
string delimitedHexHash = BitConverter.ToString(result);
string hexHash = delimitedHexHash.Replace("-", "");
return hexHash;
}
}
}
using System.Collections;
using System.IO;
using System.Net;
using System.Security.Cryptography;
using System.Text;
using System.Web;
namespace dianping_.net_samples
{
class Program
{
static void Main(string[] args)
{
//请替换AppKey以及Secret
string appKey = "612597898";
string secret = "c1891e179c394bb4bb09cbfaf00d242b";
string value = "";
string queryString = "";
//准备参数
Hashtable ht = new Hashtable();
ht.Add("format", "json");
ht.Add("city", "北京");
ht.Add("region", "海淀区");
ht.Add("category", "火锅");
ht.Add("has_coupon", "1");
ht.Add("sort", "2");
ht.Add("limit", "1");
//参数按照参数名排序
ArrayList akeys = new ArrayList(ht.Keys);
akeys.Sort();
//拼接字符串
foreach (string skey in akeys)
{
value += skey + ht[skey].ToString();
queryString += "&" + skey + "=" + Utf8Encode(ht[skey].ToString());
}
StringBuilder sb = new StringBuilder();
sb.Append(appKey);
sb.Append(value);
sb.Append(secret);
value = sb.ToString();
string url = "http://api.dianping.com/v1/business/find_businesses?appkey=" + appKey + "&sign=" + SHA1(value) + queryString;
int status = 0;
Console.WriteLine(url);
Console.WriteLine(RequestUrl(url, out status));
Console.ReadLine();
}
/// <summary>
/// URL请求
/// </summary>
/// <param name="url">URL地址</param>
/// <param name="status">URL请求响应状态码</param>
/// <returns>请求结果</returns>
public static string RequestUrl(string url, out int status)
{
string result = null;
status = 0;
HttpWebResponse response = null;
try
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
response = (HttpWebResponse)request.GetResponse();
Encoding responseEncoding = Encoding.GetEncoding(response.CharacterSet);
using (StreamReader sr = new StreamReader(response.GetResponseStream(), responseEncoding))
{
result = sr.ReadToEnd();
}
status = (int)response.StatusCode;
}
catch (WebException wexc1)
{
// any statusCode other than 200 gets caught here
if (wexc1.Status == WebExceptionStatus.ProtocolError)
{
// can also get the decription:
// ((HttpWebResponse)wexc1.Response).StatusDescription;
status = (int)((HttpWebResponse)wexc1.Response).StatusCode;
}
}
finally
{
if (response != null)
response.Close();
}
return result;
}
/// <summary>
/// URL请求参数UTF8编码
/// </summary>
/// <param name="value">源字符串</param>
/// <returns>编码后的字符串</returns>
private static string Utf8Encode(string value)
{
return HttpUtility.UrlEncode(value, System.Text.Encoding.UTF8);
}
/// <summary>
/// SHA1加密字符串
/// </summary>
/// <param name="source">源字符串</param>
/// <returns>加密后的字符串</returns>
public static string SHA1(string source)
{
byte[] value = Encoding.UTF8.GetBytes(source);
SHA1 sha = new SHA1CryptoServiceProvider();
byte[] result = sha.ComputeHash(value);
string delimitedHexHash = BitConverter.ToString(result);
string hexHash = delimitedHexHash.Replace("-", "");
return hexHash;
}
}
}
相关文章推荐
- asp.net使用飞信fetionAPI接口免费发送短信的c#的实例
- asp.net使用飞信fetionAPI接口免费发送短信的c#的实例
- 5种ASP.NET页面间传递参数实例代码
- ASP.NET动态增加HTML元素的方法实例小结
- ASP.NET中发送Email完整实例
- 用ASP.net(c#)上传各种文件的实例
- ASP.NET Forum 中禁用含有子版块的版块后产生的"未将对象引用设置到对象的实例"异常的处理方法
- asp.net web大文件上传带进度条实例代码
- ASP.NET中 Execl导出的六种方法实例
- asp.net文件上传简单实例
- jQuery操作asp.net treeview控件实例源代码下载
- Asp.net下载文件的实例
- 在ASP.NET中插入flash代码实例
- asp.net cookie的读写实例
- 在ASP.NET页面间传递任意数据的方法与实例
- ASP.NET jQuery 实例12 通过使用jQuery validation插件简单实现用户注册页面验证功能
- ASP.NET网页中RAR、DOC、PDF等文件下载功能实例源代码
- Asp.net MVC 3实例学习之ExtShop(一)――――创建应用并设置开发环境
- asp.net类序列化生成xml文件实例详解
- Asp.net页面间的参数传递简单实例 (转载)