我们在向https的站点页面post数据时,要弹一个证书确认窗体,如果post时没有自动点击确定的话,会出现,基础信道断开的错误, 我们可以为证书设置策略来解决这个问题 如下:
internal class AcceptAllCertificatePolicy : ICertificatePolicy
{
public AcceptAllCertificatePolicy()
{
}
public bool CheckValidationResult(ServicePoint sPoint, X509Certificate cert, WebRequest wRequest, int certProb)
{
return true;
}
}
private void SendData()
{
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(URL);
string postData = "operatoraccount=admin" ;
postData += "&operatorpwd=portal";
myRequest.ContentType = "application/x-www-form-urlencoded";
myRequest.KeepAlive = true;
ServicePointManager.CertificatePolicy = new AcceptAllCertificatePolicy();
MessageBox.Show(GetResponse (myRequest ,postData));
}
private string GetResponse(HttpWebRequest webRequest, string request)
{
byte[] requestBytes = Encoding.ASCII.GetBytes(request);
webRequest.ContentLength = requestBytes.Length;
webRequest.Method = "POST";
// Write the request
Stream reqStream = webRequest.GetRequestStream();
reqStream.Write(requestBytes, 0, requestBytes.Length);
reqStream.Close();
// Get a response
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
if (webRequest.HaveResponse)
{
// Read response
//StreamReader oStream = new StreamReader(webResponse.GetResponseStream(), System.Text.Encoding.ASCII);
StreamReader oStream = new StreamReader(webResponse.GetResponseStream(), Encoding.Default);
string content = oStream.ReadToEnd();
oStream.Close();
webResponse.Close();
return content;
}
return "";
}