【问题标题】:Error: This Operation cannot be performed after request has been submitted错误:提交请求后无法执行此操作
【发布时间】:2011-08-02 06:54:44
【问题描述】:

我编写了关于 httpwebrequesthttpwebresponse 的代码。我需要向服务器发送数据,但出现此异常“提交请求后无法执行此操作”。见以下代码:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://"+remoteServer+":8080/");
request.Credentials = CredentialCache.DefaultCredentials;
//Stream NewReqstream = request.GetRequestStream();
request.Method = "POST";
//request.ContentLength = cmd.Length;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Console.WriteLine("Connected..");

// Send the command
//clientSocket.Send(cmd);

Stream NewReqstream = request.GetRequestStream(); //<-- Error here
NewReqstream.Write(cmd, 0, cmd.Length);
NewReqstream.Close();

【问题讨论】:

    标签: c# http


    【解决方案1】:

    当你得到响应流时,请求被提交,所以你不能在那里操作......

    试试看:

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://"+remoteServer+":8080/");
    request.Credentials = CredentialCache.DefaultCredentials;
    //Stream NewReqstream = request.GetRequestStream();
    request.Method = "POST";
    //request.ContentLength = cmd.Length;
    
    // Send the command
    //clientSocket.Send(cmd);
    
    Stream NewReqstream = request.GetRequestStream(); //<-- Error here
    NewReqstream.Write(cmd, 0, cmd.Length);
    NewReqstream.Close();
    
    // Get the response
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    Console.WriteLine("Connected..");
    

    【讨论】:

      【解决方案2】:

      异常告诉你你需要知道什么; HTTP 是请求 => 响应,因此,如果您要求响应 (GetResponse()),则您已隐含地说“我的请求已完成;给我响应”。将GetRequestStream() 代码移到上方 GetResponse()

      【讨论】:

      • 特别是你必须将请求流上的所有流操作移到 GetResponse() 之上
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-21
      • 2015-12-23
      • 2016-02-08
      • 2020-08-16
      • 2023-03-03
      • 2019-10-01
      相关资源
      最近更新 更多