求助,.net 调用 百度统计接口DataApi 网上只有php的示例

Astpiy 2015-01-22 09:14:16
 Mac = "D4-3D=7E-BC-51-27";
//登陆用户名
string username = "*****";
//token
string publickey = @"<RSAKeyValue><Modulus>3TY7mJK3DWt/kFo6i/vgqJQ13Kc8mb7wEB7FKad40DFqHtxlXRcZup/B5U3C5kUvLvD2/36vCIt8aH8GwslQFOsmflN42/mKv0LpdIltW0nDI60BuNSDpGmMZtRk4k+bJvN+9+056AZduu3BCRJxgk3qn8xsdeWbp+um42j4uLs=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";

//functionName//登陆阶段
string functionName = "preLogin";


string toten = "ASDFGJfMA0GCSIb3DQEBAQUAA4GNADCBiQKBgQCVxjt1gGInUGF+QqUj4+2sYQHms8EqUD4j5AP+L4XKGGDRuHhxcg/Co6vhMWn7tUqyFiLLR/Y0idiHKCV/OySjAyu1xzdmb85hY4/zfckOUQ1roSFdqcRGNRTczRtlJ00WohN0Ezei8p081n08L5q0tllSTI+G6BLKzJrTaCIX+QIDAQAB";
//request 内容
string requestContent = @"[{'username': '" + username + "','token': '" + toten + "','functionName': 'preLogin','uuid': '" + Mac + "','request':[{'osVersion':' Windows','deviceType':'pc','clientVersion':'1.0'}]}]";

//requestContent=System.Web.HttpUtility.HtmlDecode()
string ys = GZipCompressString(requestContent);
string ras = "";
int len=ys.Length;
if (len <= 117)
{
ras = GetRASDate(publickey, ys);
}
else
{

int pj = len / 117;
if (pj > 1)
{
for (int i = 0; i < pj; i++)
{
ras += GetRASDate(publickey, ys.Substring(117*i, 117));
}
ras += GetRASDate(publickey, ys.Substring(117 * pj, len - (117 * pj )));
}
else
{
ras = GetRASDate(publickey, ys);
}


//ras = GetRASDate(publickey, ys.Substring(0,len/2));
//ras += GetRASDate(publickey, ys.Substring(len/2,len-len/2));
}
string res = "";
if(ras!="")
{
res = HttpPost("https://api.baidu.com/sem/common/HolmesLoginService", ras);//返回结果。
}

private string HttpPost(string Url, string postDataStr)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.Headers.Add("UUID:A4-5D-7E-BC-51-27 ");//,Content-Type:data/gzencode and rsa public encrypt;charset=UTF-8
request.Headers.Add("ACCOUNT_TYPE:1 ");
//request.Headers.Add("Content-Type: data/gzencode and rsa public encrypt;charset=UTF-8");
request.Method = "POST";
request.ContentType = "data/gzencode and rsa public encrypt;charset=UTF-8";
//request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
//request.ContentLength = postDataStr.Length;
Stream myRequestStream = request.GetRequestStream();
StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("utf-8"));
myStreamWriter.Write(postDataStr);
myStreamWriter.Close();
#region 发送post请求到服务器并读取服务器返回信息
Stream responseStream;
try
{
responseStream = request.GetResponse().GetResponseStream();
}
catch (Exception e)
{
// log error
Console.WriteLine(
string.Format("POST操作发生异常:{0}", e.Message)
);
throw e;
}
#endregion

#region 读取服务器返回信息
string stringResponse = string.Empty;
using (StreamReader responseReader =
new StreamReader(responseStream, Encoding.GetEncoding("utf-8")))
{
stringResponse = responseReader.ReadToEnd();
}
responseStream.Close();
#endregion
return stringResponse;
//HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//Stream myResponseStream = response.GetResponseStream();
//StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
//string retString = myStreamReader.ReadToEnd();
//myStreamReader.Close();
//myResponseStream.Close();
//return retString;
}



public string GetRASDate(string publickey, string plaintext)
{
RSACryptoServiceProvider rsa1 = new RSACryptoServiceProvider();
RSACryptoServiceProvider rsa2 = new RSACryptoServiceProvider();

//string publickey;
//publickey = rsa1.ToXmlString(false); //导出 rsa1 的公钥

//string plaintext;
// plaintext = "你好吗?这是用于测试的字符串。"; //原始数据
//Console.WriteLine("原始数据是:\n{0}\n", plaintext);

rsa2.FromXmlString(publickey); //rsa2 导入 rsa1 的公钥,用于加密信息

//rsa2开始加密
byte[] cipherbytes;
cipherbytes = rsa2.Encrypt(
Encoding.UTF8.GetBytes(plaintext),
false);

return (string)(Convert.ToBase64String(cipherbytes));
}


public string GZipCompressString(string rawString)
{
if (string.IsNullOrEmpty(rawString) || rawString.Length == 0)
{
return "";
}
else
{
byte[] rawData = System.Text.Encoding.UTF8.GetBytes(rawString.ToString());
byte[] zippedData = Compress(rawData);
return (string)(Convert.ToBase64String(zippedData));
}

}
/// <summary>
/// GZip压缩
/// </summary>
/// <param name="rawData"></param>
/// <returns></returns>
public static byte[] Compress(byte[] rawData)
{
MemoryStream ms = new MemoryStream();
GZipStream compressedzipStream = new GZipStream(ms, CompressionMode.Compress, true);
compressedzipStream.Write(rawData, 0, rawData.Length);
compressedzipStream.Close();
return ms.ToArray();
}

...全文
771 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
a灬魂淡 2017-05-09
  • 打赏
  • 举报
回复
看的有点蒙圈的感觉啊
qq_34821642 2017-03-16
  • 打赏
  • 举报
回复
引用 1 楼 Astpiy 的回复:
有时候返回:0\f\0\0\0\0\0\0
你们成功调用了百度统计API? 我现在遇到问题, 不知道怎么处理, 如果知道, 请加我QQ:530979210,回复我也可以, 谢谢
快乐小泊 2017-03-15
  • 打赏
  • 举报
回复
楼主 返回0\f\0\0\0\0\0\0 这个问题怎么解决的,我现在也碰到这样的问题。
dasuiyuanhao 2015-08-03
  • 打赏
  • 举报
回复
楼主 返回0\f\0\0\0\0\0\0 这个问题怎么解决的,我现在也碰到这样的问题。
小林_Object 2015-06-11
  • 打赏
  • 举报
回复
楼主 返回0\f\0\0\0\0\0\0 这个问题怎么解决的,我现在也碰到这样的问题。
zl879211311 2015-05-20
  • 打赏
  • 举报
回复
lz,你的问题解决了么,我的是返回code值为3
qzyf1992 2015-01-22
  • 打赏
  • 举报
回复
参数不对呗要不就是请求头不对没加cookie什么的自己抓抓包看看
Astpiy 2015-01-22
  • 打赏
  • 举报
回复
有时候返回:0\f\0\0\0\0\0\0

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧