使用WebRequest进行多次POST

本文关键字:POST WebRequest 使用 | 更新日期: 2023-09-27 17:58:24

我可以正常发送第一个请求,但我无法理解为什么它在第二次获取Stream os = smsRequest.GetRequestStream()时会停滞。

我知道您不能多次写入请求,这就是为什么每次都会创建一个新实例的原因。

    public void SendSMS(Dictionary<double, IList<string>> texts)
    {
        if (CreateWebRequest())
        {
            foreach (double mpn in texts.Keys)
            {
                foreach (string sms in texts[mpn])
                {
                    string formParams = string.Format("sendTo=0{0}&selectText=Please+Select...&textMessage={1}&x=28&y=10", mpn, sms);
                    byte[] encodedParams = Encoding.UTF8.GetBytes(formParams);
                    HttpWebRequest smsRequest = CreateSMSRequest(encodedParams);
                    using (Stream os = smsRequest.GetRequestStream())
                    {
                        os.Write(encodedParams, 0, encodedParams.Length);
                        os.Close();
                    }
                }
            }
        }
    }

    private HttpWebRequest CreateSMSRequest(byte[] encodedParams)
    {
        HttpWebRequest smsRequest = (HttpWebRequest)WebRequest.Create(PostUrl);
        smsRequest.Method = WebRequestMethods.Http.Post;
        smsRequest.ContentType = "application/x-www-form-urlencoded";
        smsRequest.ContentLength = encodedParams.Length;
        smsRequest.AllowAutoRedirect = false;
        smsRequest.Credentials = CredentialCache.DefaultNetworkCredentials;
        smsRequest.Headers.Add(HttpRequestHeader.Cookie, _cookieData);
        return smsRequest;
    }

使用WebRequest进行多次POST

我想你的答案和这个一样:HttpWebRequest getRequestStream在多次运行时挂起

在您的使用声明后放入:

var response = smsRequest.GetResponse() as HttpWebResponse;