如何使用自定义参数(不是postdata,而不是url参数)复制webrequest?

时间:2012-12-05 13:35:03

标签: c# httpwebrequest fiddler

上下文

大家好,我正在尝试模拟这个website的查询,但我没有这样做。

我使用C#和自定义自定义库来包装WebRequests操作,以便更轻松地为字符串和位图模拟Posts and Gets

此外,我正在使用Fiddler2 Web调试器来调试服务的Web请求

如何测试自己的服务:

  1. 指向service
  2. 的链接
  3. 在第一个白框上使用此文档:04034872000121
  4. 写下验证码并点击“Consultar”
  5. 多数民众赞成。

    问题:

    用fiddler解决请求后,并在代码上复制了所有内容(Cookies,Origin,Host,Postdata和一个巨大的json等等)。

    查询请求仍然无效,它再次将我重定向到主页,而不是查询文档。 (我在Web请求对象上允许“AutoRedirect”)。

    我无法复制的唯一参数是:GxAjaxRequest: 1

    以下是请求的Fiddler调试反馈:

    POST http://sefaznet.ac.gov.br/sefazonline/servlet/hpfsincon?0898a16d81a4e94896958b17b52f252d,gx-no-cache=1354713117196 HTTP/1.1
    Host: sefaznet.ac.gov.br
    Connection: keep-alive
    Content-Length: 1337
    Origin: http://sefaznet.ac.gov.br
    GxAjaxRequest: 1 **Weird Parameter. I've never saw it before.**
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko)     Chrome/23.0.1271.95 Safari/537.11
    Content-Type: application/x-www-form-urlencoded
    Accept: */*
    Referer: http://sefaznet.ac.gov.br/sefazonline/servlet/hpfsincon
    Accept-Encoding: gzip,deflate,sdch
    Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4
    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
    Cookie: GX_SESSION_ID=vSLRLKed3eXJGMBorGepVtQkJOQ1I3o0EBUVzT0g%2BI8%3D;     JSESSIONID=af2ba968b7889ec8869caaaba281
    
    vNUMDOC=04034872000121&cfield=chin&BUTTON1=Consultar&BTN_VOLTAR=Retornar&GXState=%7B%22_EventName%22%3A%22E'VISUALIZADADOS'.%22%2C%22_EventGridId%22%3A44%2C%22_EventRowId%22%3Aundefined%2C%22nRC_Duplicados%22%3A%220%22%2C%22CAPTCHA1_Reloadimagetext%22%3A%22Obter%20nova%20imagem!%22%2C%22CAPTCHA1_Validationresult%22%3A1%2C%22GX_FocusControl%22%3A%22vNUMDOC%22%2C%22GX_AJAX_KEY%22%3A%2264FFFF0AFF7A4DFF2655FFFFFF26FF77%22%2C%22AJAX_SECURITY_TOKEN%22%3A%221a9634f566dcd40d12bb8146fd7ff6edca12ae737a3743d79b4b826c3bd4a604%22%2C%22GX_CMP_OBJS%22%3A%7B%7D%2C%22sCallerURL%22%3A%22%2Fsefazonline%2Fservlet%2Fhpfsindado%3FeTlFtl5mBgEOtpLCt8Q02bMjmN3K93hV7i2Uxq_rHv0%3D%22%2C%22GX_RES_PROVIDER%22%3A%22com.genexus.webpanels.GXResourceProvider%22%2C%22GX_THEME%22%3A%22GeneXusX%22%2C%22_MODE%22%3A%22%22%2C%22Mode%22%3A%22%22%2C%22IsModified%22%3A%221%22%2C%22MESSAGE_Width%22%3A%22100%22%2C%22MESSAGE_Height%22%3A%22100%22%2C%22MESSAGE_Show%22%3A%22false%22%2C%22MESSAGE_Title%22%3A%22Title%22%2C%22MESSAGE_Message%22%3A%22This%20is%20the%20message%22%2C%22MESSAGE_Type%22%3A%22alert%22%2C%22MESSAGE_Icon%22%3A%22info%22%2C%22MESSAGE_Cls%22%3A%22%22%2C%22MESSAGE_Position%22%3A%22t%22%2C%22MESSAGE_Duration%22%3A1%2C%22MESSAGE_Visible%22%3A1%2C%22CAPTCHA1_Width%22%3A%22140%22%2C%22CAPTCHA1_Height%22%3A%2239%22%2C%22CAPTCHA1_Visible%22%3A1%7D&
    

    问题:

    我如何通过代码实际复制/添加此参数到我的webrequest?

    有没有办法这样做?

    顺便说一句,该网站很多都会使用脚本,这些脚本难以“弄清楚”请求中使用的大多数参数的来源。

    我希望有人可以帮助我。

    提前致谢。

1 个答案:

答案 0 :(得分:0)

我已经想通了。

问题是我必须为每个请求添加自定义标头。

webRequest.Headers.Add ("customheadertext and value");

现在fiddler正确显示了我的新请求,添加了标题

POST http://sefaznet.ac.gov.br/sefazonline/servlet/hpfsincon?0898a16d81a4e94896958b17b52f252d,gx-no-cache=1354721123208 HTTP/1.1
GxAjaxRequest: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko)   Chrome/13.0.782.107 Safari/535.1
Content-Type: application/x-www-form-urlencoded
Referer: http://sefaznet.ac.gov.br/sefazonline/servlet/hpfsincon
Host: sefaznet.ac.gov.br
Cookie: GX_SESSION_ID=B8w8AQ4W%2FLzLHIpBor3JwJDQAWGy1xRqCYUMnzF14Yk%3D;     JSESSIONID=c19564cbebfab1911442fd64a0bb
Content-Length: 1291
Expect: 100-continue
Accept-Encoding: gzip, deflate
相关问题