金数据post提交数据,“远程服务器返回错误: (401) 未经授权。”

Lcindep110 2017-05-21 09:09:11
金数据post提交数据,“远程服务器返回错误: (401) 未经授权。”
有没有解决方法呢?
以下是post方法


public static string Post(string postUrl, NameValueCollection postParam)
{
try
{
ServicePointManager.ServerCertificateValidationCallback = (RemoteCertificateValidationCallback)Delegate.Combine(ServicePointManager.ServerCertificateValidationCallback, new RemoteCertificateValidationCallback(ValidateServerCertificate));
ServicePointManager.Expect100Continue = false;
string paramStr = string.Empty;
foreach (string item in postParam)
{
paramStr += string.Format("{0}={1}&", item, postParam[item]);
}
byte[] bs = Encoding.UTF8.GetBytes(paramStr.TrimEnd('&'));
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(postUrl);
//参照浏览器的请求报文 封装需要的参数 这里参照ie9
//浏览器可接受的MIME类型
req.Accept = "text/html, application/xhtml+xml, */*";
//包含一个URL,用户从该URL代表的页面出发访问当前请求的页面
req.Referer = "https://jinshuju.net/f/z1usAE";
//浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用
req.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko";
req.ContentType = "application/x-www-form-urlencoded";
//请求方式
req.Method = "POST";
//是否保持常连接
req.KeepAlive = false;
req.Headers.Add("Accept-Encoding", "gzip, deflate");
//表示请求消息正文的长度
req.ContentLength = bs.Length;
//req.Headers.Add("csrf-param", "authenticity_token");
//req.Headers.Add("csrf-token", "fO6iOKdw4xxUqJ7Ck5y/j7Ae/22VADhSW0vGu1s8SJC+ZFaqKOcdn8hlR7ppE2l83AYuyr9quliHszgEeZbMrA==");

using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(bs, 0, bs.Length);
}
using (WebResponse wr = req.GetResponse())
{
Stream responseStream = wr.GetResponseStream();
StreamReader streamReader = new StreamReader(responseStream, Encoding.UTF8);
string retString = streamReader.ReadToEnd();
return retString;
}
}
catch (Exception ex)
{
return ex.Message;
}
}
...全文
466 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
泡泡龙 2017-05-22
  • 打赏
  • 举报
回复
抓包对比一下浏览器和程序post的header的区别
  • 打赏
  • 举报
回复
我看你把token注销掉了,缺了这个不就无法身份识别了
秋的红果实 2017-05-22
  • 打赏
  • 举报
回复
可能是权限问题,参看http://www.cnblogs.com/foxtk/archive/2013/03/01/2938798.html
编程有钱人了 2017-05-22
  • 打赏
  • 举报
回复
ServicePointManager.Expect100Continue = true; 试试

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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