如何在C#中

问题描述

您能帮我解决这个问题吗,我在VS2019中有一个Windows窗体,我想在发送验证码和其他参数(2个参数)后获取生成的html,我的Windows窗体包含devexpress控件,在其中进行图片编辑我将验证码,textedit1放入验证码,textedit2放入第二个参数(例如06892898),simplebutton1要将验证码载入图片编辑,simplebutton2要求使用2个参数的网站,问题是当我在url中传递两个参数时,因此我得到了一个带有消息“会话已完成”的html,我该如何获取会话或保持C#中的webclient对象存活。预先感谢,这是我的代码

private WebClient myClient = new WebClient();
public FrmData()
{
    InitializeComponent();
}
private void btnCaptcha_Click(object sender,EventArgs e)
{
    myClient.DownloadFile(new Uri("http://ww4.essalud.gob.pe:7777/acredita/captcha.jpg"),@"c:\temp\captcha.jpg");
    pictureCaptcha.Image = Image.FromFile(@"c:\temp\captcha.jpg");
}
private void btnLoad_Click(object sender,EventArgs e)
{
    string line = string.Empty;
    try
    {
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://ww4.essalud.gob.pe:7777/acredita/servlet/Ctrlwacre?captchafield_doc=" + txtedit1.Text + "&td=1&nd=" + txtedit2.Text);
        HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
        StreamReader sr = new StreamReader(resp.GetResponseStream(),System.Text.Encoding.UTF8);
        line = sr.ReadToEnd();
        sr.Close();
        resp.Close();
        XtraMessageBox.Show("" + line);
    }
    catch (Exception ex)
    {
        XtraMessageBox.Show("" + ex.Message);
    }
}

enter image description here

解决方法

我使用HttpWebRequest,HttpWebResponse,CookieContainer类获得了解决方案,我执行了以下代码:

private HttpWebRequest request;
private HttpWebResponse response;
private CookieContainer cookies = new CookieContainer();
private void btnCaptcha_Click(object sender,EventArgs e)
{
    try
    {
        request = (HttpWebRequest)WebRequest.Create("http://ww4.essalud.gob.pe:7777/acredita/captcha.jpg");
        request.CookieContainer = cookies;
        request.Timeout = 10000;
        request.ReadWriteTimeout = 10000;
        request.KeepAlive = true;
        response = (HttpWebResponse)request.GetResponse();
        pictureCaptcha.Image = Image.FromStream(response.GetResponseStream());
    }
    catch (Exception ex)
    {
        XtraMessageBox.Show("" + ex.Message);
    }
}
private void btnLoad_Click(object sender,EventArgs e)
{
    string line = string.Empty;
    try
    {
        request = (HttpWebRequest)WebRequest.Create("http://ww4.essalud.gob.pe:7777/acredita/servlet/Ctrlwacre?captchafield_doc=" + txtCaptcha.Text + "&td=1&nd=06915398");
        request.CookieContainer = cookies;
        response = (HttpWebResponse)request.GetResponse();
        StreamReader sr = new StreamReader(response.GetResponseStream(),System.Text.Encoding.UTF8);
        line = sr.ReadToEnd();
        sr.Close();
        response.Close();
    }
    catch (Exception ex)
    {
        XtraMessageBox.Show("" + ex.Message);
    }
    XtraMessageBox.Show("" + line);
}

感谢所有评论以及使用cookie并保持活动的想法。