C#HTTPS Post。Web服务器抛出“;“格式不好”;例外情况

C#HTTPS Post。Web服务器抛出“;“格式不好”;例外情况,c#,C#,我正在尝试从C#应用程序发送Https帖子。我可以连接到web服务器并对用户进行身份验证。服务器配置为通过一些数据发送POST查询。如果从浏览器尝试,服务器不会正确地重新发送。但是,当我尝试从我的应用程序中执行相同的查询时,服务器会响应一个错误,即 “服务器异常:格式不正确” 它是一个运行在Cent OS上的Apache Web服务器 下面是代码。谁能帮我一下吗。提前谢谢 从浏览器尝试时服务器正确响应的POST链接示例: 我的C#代码: 服务器响应: 12790618993000服务器异

我正在尝试从C#应用程序发送Https帖子。我可以连接到web服务器并对用户进行身份验证。服务器配置为通过一些数据发送POST查询。如果从浏览器尝试,服务器不会正确地重新发送。但是,当我尝试从我的应用程序中执行相同的查询时,服务器会响应一个错误,即

“服务器异常:格式不正确”

它是一个运行在Cent OS上的Apache Web服务器

下面是代码。谁能帮我一下吗。提前谢谢


从浏览器尝试时服务器正确响应的POST链接示例:


我的C#代码:


服务器响应:


12790618993000服务器异常:格式不正确(无效令牌):第1行第7列

我不确定您的格式有什么问题,但我可以建议您执行以下操作:

  • 下载并安装Fiddler-
  • 下载并安装我的Fiddler扩展-请求代码-
  • 快跑小提琴手
  • 将Fiddler配置为解密HTTPS-工具>Fiddler选项>HTTPS,并勾选“解密HTTPS流量”框
  • 访问正确响应的URL:
  • 将该会话行从Fiddler会话列表拖到“代码”选项卡中
  • 它将生成可用于发出相同请求的C#代码

  • 如果您尝试了,请告诉我它是否仍然不起作用。

    只是好奇-您尝试过WebClient吗?它会让你停止做一些手工工作,并可能解决任何问题。Fiddler(或者其他可以显示实际流量的东西)也很适合使用。我刚刚这么做了,发现post参数有问题。Fiddler是一个很好的工具,谢谢你给我指引了正确的方向。干杯,很高兴听到这个!如果你对我的回答满意,你能接受吗?
    ServicePointManager.ServerCertificateValidationCallback = delegate
    { return true; };
    
    NetworkCredential nc = new NetworkCredential("User", "Password");
    CredentialCache cc = new CredentialCache();
    cc.Add("https://some.server.com", 443, "Basic", nc);
    
    HttpWebRequest WebRequest =
    (HttpWebRequest)System.Net.WebRequest.Create("https://some.server.com/some/local_dir/abc.cgi");
    
    WebRequest.KeepAlive = true;
    WebRequest.Method = "POST";
    WebRequest.AllowAutoRedirect = false;
    WebRequest.Credentials = cc;
    WebRequest.PreAuthenticate = true;
    WebRequest.ContentType = "application/x-www-form-urlencoded";
    WebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; " +
            "Windows NT 5.1; SV1; .NET CLR 1.1.4322; " +
            ".NET CLR 2.0.50215)";
    
    byte[] AuthBytes = Encoding.ASCII.GetBytes("User:Password");
    string sAuth = Convert.ToBase64String(AuthBytes);
    WebRequest.Headers.Add("Authorization", "Basic " + sAuth);
    
    
    byte[] bytes = Encoding.UTF8.GetBytes("command=ACommand&entitytype=AnEntity");
    using (Stream requestStream = WebRequest.GetRequestStream())
    {
        requestStream.Write(bytes, 0, bytes.Length);
    }
    
    try
    {
    
        WebResponse response = WebRequest.GetResponse();
        Console.WriteLine(new StreamReader(response.GetResponseStream()).ReadToEnd());
    
    }
    catch (Exception ex)
    {
        Console.WriteLine("Exception: "+ex.Message);
    }