我正在尝试复制我可以在浏览器中执行的HTTP POST。我无法使用C#/ WebRequest来使用它。
当我调用网址时,我在Fiddler中收到“ 302 Found ”回复,在我看来,我发布的数据无效。
我试图复制的HTTP帖子有以下内容(Fiddler中的TextView):
------WebKitFormBoundaryTbZqL4CZcQwC7K58
Content-Disposition: form-data; name="__EVENTTARGET"
ctl00$ctl00$ctl00$ctl00$cphContent$cphMain$cphMain$userInfo$btnSend
------WebKitFormBoundaryTbZqL4CZcQwC7K58
Content-Disposition: form-data; name="__EVENTARGUMENT"
------WebKitFormBoundaryTbZqL4CZcQwC7K58
Content-Disposition: form-data; name="__VIEWSTATE"
/wEPDwULLTE3NTkzNDk2NjAPFgIeE1ZhbGlkYXRlUmVxdWVzdE1vZGUCARYCZg9kFgJmD2QWAmYPZBYCZg9kFgICAQ9kFgICAw8WAh4Fc3R5bGUFEnBvc2l0aW9uOnJlbGF0aXZlOxYCAgEPZBYEAgEPFgIeB2VuY3R5cGUFE211bHRpcGFydC9mb3JtLWRhdGEWCAIBD2QWAgIHD2QWAgIDD2QWCAIDDw8WAh4HVmlzaWJsZWhkZAIFDw8WAh4ITWFpbEd1aWQoKVhTeXN0ZW0uR3VpZCwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5JDI2Y2UwMjI2LTM1NDctNDY0MC05Y2UyLTkzZDNkMTcwZjU0Y2QWBgIBD2QWAmYPZBYOAgEPDxYCHgtOYXZpZ2F0ZVVybAUYL3Byb2ZpbC80MTA4MzQ4L0JldHRpbmFqZBYCZg8PFgIeBFRleHQFEUJldHRpbmFfaiwgMjQgw6VyZGQCAw9kFgJmDw8WAh4NQWx0ZXJuYXRlVGV4dGUWAh4KZ2FsbGVyeWltZwUCbm9kAgUPD2QWAh8BBSdwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MjNweDtyaWdodDoyMTVweDtkAgcPDxYEHwYFDlNlbmQgZW4gYmVza2VkHwUFDGphdmFzY3JpcHQ6OxYEHgdvbmNsaWNrBVNTaG93TmV3TW9kYWwoJ2NwaENvbnRlbnRfY3BoTWFpbl9jcGhNYWluX3VzZXJJbmZvX1NlbmROZXdNYWlsUG9wdXAnKTtGaXhDS0VkaXRvcigpOx8BBQpyaWdodDo5cHg7ZAIJDw8WAh8DaGRkAgsPDxYCHwNoZGQCDQ8PFgIfA2hkZAICD2QWAgIBD2QWAgIBD2QWAgIBD2QWAmYPZBYcAgEPFgIfBgU2U2tyaXYgYmVza2VkIHRpbCA8c3BhbiBjbGFzcz0iZmVtYWxlIj5CZXR0aW5hX2o8L3NwYW4+ZAIFDw8WAh8DaGRkAgcPDxYCHwNoZGQCCQ9kFgoCAQ8PZBYCHglvbmtleWRvd25kZAIFD2QWAmYPDxYEHgZIZWlnaHQbAAAAAADAYkABAAAAHgRfIVNCAoABZGQCBw8PFgQeCENzc0NsYXNzBStzZW5kTWFpbCBkYXRpbmdCdXR0b25HcmVlbjMwIGRhdGluZ0J1dHRvbjMwHwwCAmRkAgkPFgIfCQVAc3dhcFZpc2liaWxpdHkoJ2NwaENvbnRlbnRfY3BoTWFpbl9jcGhNYWluX3VzZXJJbmZvX2FkZEltYWdlcycpOxYCAgEPDxYCHwdlFgIfCAUCbm9kAgsPZBYEAgEPZBYEAgEPFgIfA2hkAgMPDxYEHw0FImRhdGluZ0J1dHRvbkdyZWVuMjIgZGF0aW5nQnV0dG9uMjIfDAICZGQCAw88KwAJAGQCCw8PFgQeCEltYWdlVXJsBWxodHRwOi8vbWVkaWEuZGF0aW5nLmRrL1VzZXJzLzRjZWUwMWM1LWI1MjgtNGI3Ny1iOTkwLTdjYTc4MWQxOTZiZi9QaG90b3MvNjM1MTQ4NzkwNjE2MjkyMDkxX1dlYlRodW1ibmFpbC5qcGcfB2UWAh8IBQJub2QCDQ8PFgYfBgUJQmV0dGluYV9qHw0FBmZlbWFsZR8MAgJkZAIPDxYCHwYFBkt2aW5kZWQCEQ8WAh8GBQIyNGQCEw8WAh8GBRlCb3IgaSA8Yj5WZWpsZTwvYj4gKDcxMDApZAIVDw8WAh8DaGQWAgIBDxYCHwZlZAIXDw8WBh8GBQlCZXR0aW5hX2ofDQUGZmVtYWxlHwwCAmRkAhkPFgIfBgUEZGF0ZWQCGw9kFgICAQ8WAh8GBQptaW4gcmVnaW9uZAIdD2QWBAIBDxYCHwYFAjI0ZAIDDxYCHwYFAjMxZAIDD2QWAmYPZBYCAgEPZBYCAgEPZBYCAgEPZBYCZg9kFhoCAQ8PFgYfBgUJQmV0dGluYV9qHw0FBmZlbWFsZR8MAgJkZAIDD2QWAgIBDw8WBh8GBQlCZXR0aW5hX2ofDQUGZmVtYWxlHwwCAmRkAgUPZBYEAgEPDxYGHwYFCUJldHRpbmFfah8NBQZmZW1hbGUfDAICZGQCAw8WAh8GBQNodW5kAgcPZBYCAgEPDxYGHwYFCUJldHRpbmFfah8NBQZmZW1hbGUfDAICZGQCCQ8PFgIfDgVsaHR0cDovL21lZGlhLmRhdGluZy5kay9Vc2Vycy80Y2VlMDFjNS1iNTI4LTRiNzctYjk5MC03Y2E3ODFkMTk2YmYvUGhvdG9zLzYzNTE0ODc5MDYxNjI5MjA5MV9XZWJUaHVtYm5haWwuanBnZGQCCw8PFgYfBgUJQmV0dGluYV9qHw0FBmZlbWFsZR8MAgJkZAINDxYCHwYFBkt2aW5kZWQCDw8WAh8GBQIyNGQCEQ8WAh8GBRlCb3IgaSA8Yj5WZWpsZTwvYj4gKDcxMDApZAITDw8WBh8GBQlCZXR0aW5hX2ofDQUGZmVtYWxlHwwCAmRkAhUPFgIfBgUEZGF0ZWQCFw9kFgICAQ8WAh8GBQptaW4gcmVnaW9uZAIZD2QWBAIBDxYCHwYFAjI0ZAIDDxYCHwYFAjMxZAIHD2QWAgIBD2QWAgIBD2QWAgIBD2QWAgIBD2QWAgIBD2QWAgIBD2QWAmYPZBYCAgMPEGRkFgBkAgkPZBYSAgEPZBYCAgEPZBYCAgEPZBYSAgEPDxYCHwdlFgIfCAUCbm9kAgMPDxYGHw0FB2lzTWF0Y2gfB2UfDAICFgIfCAUCbm9kAgUPDxYGHw0FB2lzTWF0Y2gfB2UfDAICFgIfCAUCbm9kAgcPDxYGHw0FB2lzTWF0Y2gfB2UfDAICFgIfCAUCbm9kAgkPDxYGHw0FB2lzTWF0Y2gfB2UfDAICFgIfCAUCbm9kAgsPDxYGHw0FB2lzTWF0Y2gfB2UfDAICFgIfCAUCbm9kAg0PDxYGHw0FB2lzTWF0Y2gfB2UfDAICFgIfCAUCbm9kAg8PDxYGHw0FB2lzTWF0Y2gfB2UfDAICFgIfCAUCbm9kAhEPDxYEHw4FJS9HcmFwaGljcy9Vc2VyUGFnZXMvbWF0Y2gvd2hlZWwvNy5wbmcfB2UWAh8IBQJub2QCAw9kFgICAQ9kFgICAQ9kFgICAQ8WAh4LXyFJdGVtQ291bnQCAxYGZg9kFgICAQ8PFgQfDQUvY3JvcHBlZEltYWdlQ29udGFpbmVyIGNyb3BwZWRJbWFnZUNvbnRhaW5lckhpZ2gfDAICZBYCAgEPDxYEHw4FcGh0dHA6Ly9tZWRpYS5kYXRpbmcuZGsvVXNlcnMvNGNlZTAxYzUtYjUyOC00Yjc3LWI5OTAtN2NhNzgxZDE5NmJmL1Bob3Rvcy85NzIzMjcvNjM1MTQ4Nzk3NjcyNTEyODE0X1dlYk5vcm1hbC5qcGcfB2UWBB8BBQp0b3A6LTIzcHg7HwgFAm5vZAIBD2QWAgIBDw8WBB8NBS9jcm9wcGVkSW1hZ2VDb250YWluZXIgY3JvcHBlZEltYWdlQ29udGFpbmVySGlnaB8MAgJkFgICAQ8PFgQfDgVwaHR0cDovL21lZGlhLmRhdGluZy5kay9Vc2Vycy80Y2VlMDFjNS1iNTI4LTRiNzctYjk5MC03Y2E3ODFkMTk2YmYvUGhvdG9zLzk3MjMyNy82MzUxNDg3OTQ3NDc2OTQzMDlfV2ViTm9ybWFsLmpwZx8HZRYEHwEFCnRvcDotMjNweDsfCAUCbm9kAgIPZBYCAgEPDxYEHw0FL2Nyb3BwZWRJbWFnZUNvbnRhaW5lciBjcm9wcGVkSW1hZ2VDb250YWluZXJIaWdoHwwCAmQWAgIBDw8WBB8OBXBodHRwOi8vbWVkaWEuZGF0aW5nLmRrL1VzZXJzLzRjZWUwMWM1LWI1MjgtNGI3Ny1iOTkwLTdjYTc4MWQxOTZiZi9QaG90b3MvOTcyMzI3LzYzNTE0ODc5NDU2NTc0NDI4Ml9XZWJOb3JtYWwuanBnHwdlFgQfAQUKdG9wOi0yM3B4Ox8IBQJub2QCBQ9kFgQCAQ8WAh8DaGQCBQ8WAh8DaBYCAgEPDxYCHwNoZGQCBw8PFgIfA2dkZAILDw8WAh8DaGQWAmYPZBYCAgEPFgIfDwL/////D2QCDQ8PFgIfA2hkZAIPD2QWAmYPZBYCAgEPZBYGAgEPDxYCHwUFGy9rb250cm9scGFuZWwvcHJvZmlsYmlsbGVkZWRkAgMPDxYCHwUFFy9rb250cm9scGFuZWwvZm90b2FsYnVtZGQCBQ8PFgIfBQUYL2tvbnRyb2xwYW5lbC9wcm9maWxpbmZvZGQCEQ8WAh8DaBYCZg9kFgICAQ8PFgIfA2hkZAITD2QWBgIBDw8WAh8FBV9+L1VJL0Zvcm1zL1VzZXJzL1NhbGVzL1B1cmNoYXNlL0Nob29zZVByb2R1Y3RHcm91cC5hc3B4P1Byb2R1Y3RHcm91cElEPTEmZ3c9OCZnd3RyaWdnZXI9NDEwODM0OGRkAgMPDxYCHwUFX34vVUkvRm9ybXMvVXNlcnMvU2FsZXMvUHVyY2hhc2UvQ2hvb3NlUHJvZHVjdEdyb3VwLmFzcHg/UHJvZHVjdEdyb3VwSUQ9MSZndz04Jmd3dHJpZ2dlcj00MTA4MzQ4ZGQCBQ8PFgIfBQVffi9VSS9Gb3Jtcy9Vc2Vycy9TYWxlcy9QdXJjaGFzZS9DaG9vc2VQcm9kdWN0R3JvdXAuYXNweD9Qcm9kdWN0R3JvdXBJRD0xJmd3PTgmZ3d0cmlnZ2VyPTQxMDgzNDhkZAIHD2QWBgIFDw8WAh8FBQ0vZmF2b3JpdGxpc3RlZGQCCQ8PFgIfBQUML29ubGluZWxpc3RlZGQCDw9kFgICAQ8PFgIfA2dkFgICAw8WAh4EaHJlZgUsamF2YXNjcmlwdDpkb1NlYXJjaCgnY3BoQ29udGVudF9kdGJTZWFyY2gnKTtkAg8PFgIfA2dkAhEPFgIfA2dkAgUPDxYCHwNnZGQYAQVIY3RsMDAkY3RsMDAkY3RsMDAkY3RsMDAkY3BoQ29udGVudCRjcGhNYWluJGNwaE1haW4kY3BoTWFpbiRTaG93SW50ZXJlc3QxDxQrAAJkArzg+gFk
------WebKitFormBoundaryTbZqL4CZcQwC7K58
Content-Disposition: form-data; name="__EVENTVALIDATION"
/wEdAAx95zPpe2BlbkSPtSjnJkeSqvYfpfS3XNXzjmCqwTcmLQjHP/vbZXJQPtJKH09iDnpjSbMVDuj6latN4D+WJQ0GCMex73PUPLDd7cpHB4eUSvZX/tYXeQmcSauQTEcfDN4gzLbTMorrzQbwiAG5eIHPlTUVcvEvYPdgk6jbJTrWAjYX1hFGBRb9pN45cUrARCzIG4TG+xGWOKHjJPrtLGHRsD92s0QQ5wfKXLUKe9jk89T+K49gmSvDB5JCjlvQU0Q=
------WebKitFormBoundaryTbZqL4CZcQwC7K58
Content-Disposition: form-data; name="ctl00$ctl00$ctl00$ctl00$cphContent$cphMain$cphLeftMenu$hfRemoveFavoritID"
------WebKitFormBoundaryTbZqL4CZcQwC7K58
Content-Disposition: form-data; name="ctl00$ctl00$ctl00$ctl00$cphContent$cphMain$cphLeftMenu$hfAddFilterID"
4108348
------WebKitFormBoundaryTbZqL4CZcQwC7K58
Content-Disposition: form-data; name="ctl00$ctl00$ctl00$ctl00$cphContent$cphMain$cphLeftMenu$hfRemoveFilterID"
------WebKitFormBoundaryTbZqL4CZcQwC7K58
Content-Disposition: form-data; name="ctl00$ctl00$ctl00$ctl00$cphContent$cphMain$cphMain$userInfo$tbSubject"
Test
------WebKitFormBoundaryTbZqL4CZcQwC7K58
Content-Disposition: form-data; name="ctl00$ctl00$ctl00$ctl00$cphContent$cphMain$cphMain$userInfo$ceMessage$CkEditor1"
Test123
------WebKitFormBoundaryTbZqL4CZcQwC7K58
Content-Disposition: form-data; name="ctl00$ctl00$ctl00$ctl00$cphContent$cphMain$cphMain$userInfo$MultiUpload$fuFallbackGalleryImageUpload"; filename=""
Content-Type: application/octet-stream
------WebKitFormBoundaryTbZqL4CZcQwC7K58--
到目前为止,我已经建立了以下TextView:
------------63f74b64334e4c8fad891bd1f969402b
Content-Disposition: form-data; name="Content-Disposition: form-data; name="__EVENTTARGET""
ctl00$ctl00$ctl00$ctl00$cphContent$cphMain$cphMain$userInfo$btnSend
------------63f74b64334e4c8fad891bd1f969402b
Content-Disposition: form-data; name="Content-Disposition: form-data; name="__EVENTARGUMENT""
------------63f74b64334e4c8fad891bd1f969402b
Content-Disposition: form-data; name="Content-Disposition: form-data; name="__VIEWSTATE""
/wEPDwULLTE3NTkzNDk2NjAPFgIeE1ZhbGlkYXRlUmVxdWVzdE1vZGUCARYCZg9kFgJmD2QWAmYPZBYCZg9kFgICAQ9kFgICAw8WAh4Fc3R5bGUFEnBvc2l0aW9uOnJlbGF0aXZlOxYCAgEPZBYEAgEPFgIeB2VuY3R5cGUFE211bHRpcGFydC9mb3JtLWRhdGEWCAIBD2QWAgIHD2QWAgIDD2QWCAIDDw8WAh4HVmlzaWJsZWhkZAIFDw8WAh4ITWFpbEd1aWQoKVhTeXN0ZW0uR3VpZCwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5JDEwNGVkZjRmLTM4MTktNDc2Yi04ZDY4LTQ3OTc1ZmNjYzhhZmQWBgIBD2QWAmYPZBYOAgEPDxYCHgtOYXZpZ2F0ZVVybAUZL3Byb2ZpbC80MTA3MTk3L1Jpc3Nrb3Y5MGQWAmYPDxYCHgRUZXh0BRFSaXNza292OTAsIDIzIMOlcmRkAgMPZBYCZg8PFgIeDUFsdGVybmF0ZVRleHRlFgIeCmdhbGxlcnlpbWcFAm5vZAIFDw9kFgIfAQUncG9zaXRpb246YWJzb2x1dGU7dG9wOjIzcHg7cmlnaHQ6MjE1cHg7ZAIHDw8WBB8GBQ5TZW5kIGVuIGJlc2tlZB8FBQxqYXZhc2NyaXB0OjsWBB4Hb25jbGljawVTU2hvd05ld01vZGFsKCdjcGhDb250ZW50X2NwaE1haW5fY3BoTWFpbl91c2VySW5mb19TZW5kTmV3TWFpbFBvcHVwJyk7Rml4Q0tFZGl0b3IoKTsfAQUKcmlnaHQ6OXB4O2QCCQ8PFgIfA2hkZAILDw8WAh8DaGRkAg0PDxYCHwNoZGQCAg9kFgICAQ9kFgICAQ9kFgICAQ9kFgJmD2QWHAIBDxYCHwYFNlNrcml2IGJlc2tlZCB0aWwgPHNwYW4gY2xhc3M9ImZlbWFsZSI+Umlzc2tvdjkwPC9zcGFuPmQCBQ8PFgIfA2hkZAIHDw8WAh8DaGRkAgkPZBYKAgEPD2QWAh4Jb25rZXlkb3duZGQCBQ9kFgJmDw8WBB4GSGVpZ2h0GwAAAAAAwGJAAQAAAB4EXyFTQgKAAWRkAgcPDxYEHghDc3NDbGFzcwUrc2VuZE1haWwgZGF0aW5nQnV0dG9uR3JlZW4zMCBkYXRpbmdCdXR0b24zMB8MAgJkZAIJDxYCHwkFQHN3YXBWaXNpYmlsaXR5KCdjcGhDb250ZW50X2NwaE1haW5fY3BoTWFpbl91c2VySW5mb19hZGRJbWFnZXMnKTsWAgIBDw8WAh8HZRYCHwgFAm5vZAILD2QWBAIBD2QWBAIBDxYCHwNoZAIDDw8WBB8NBSJkYXRpbmdCdXR0b25HcmVlbjIyIGRhdGluZ0J1dHRvbjIyHwwCAmRkAgMPPCsACQBkAgsPDxYEHghJbWFnZVVybAVsaHR0cDovL21lZGlhLmRhdGluZy5kay9Vc2Vycy82M2U5N2U2Mi0xM2JhLTQ4OTgtOTczZC0yYjI1NjhjMjBhMzIvUGhvdG9zLzYzNTE0MzYxMzk1MzI5OTMzMF9XZWJUaHVtYm5haWwuanBnHwdlFgIfCAUCbm9kAg0PDxYGHwYFCVJpc3Nrb3Y5MB8NBQZmZW1hbGUfDAICZGQCDw8WAh8GBQZLdmluZGVkAhEPFgIfBgUCMjNkAhMPFgIfBgUbQm9yIGkgPGI+Umlzc2tvdjwvYj4gKDgyNDApZAIVDw8WAh8DaGQWAgIBDxYCHwZlZAIXDw8WBh8GBQlSaXNza292OTAfDQUGZmVtYWxlHwwCAmRkAhkPFgIfBgUIa8OmcmVzdGVkAhsPZBYCAgEPFgIfBgUPbWl0IG7DpnJvbXLDpWRlZAIdD2QWBAIBDxYCHwYFAjIzZAIDDxYCHwYFAjI5ZAIDD2QWAmYPZBYCAgEPZBYCAgEPZBYCAgEPZBYCZg9kFhoCAQ8PFgYfBgUJUmlzc2tvdjkwHw0FBmZlbWFsZR8MAgJkZAIDD2QWAgIBDw8WBh8GBQlSaXNza292OTAfDQUGZmVtYWxlHwwCAmRkAgUPZBYEAgEPDxYGHwYFCVJpc3Nrb3Y5MB8NBQZmZW1hbGUfDAICZGQCAw8WAh8GBQNodW5kAgcPZBYCAgEPDxYGHwYFCVJpc3Nrb3Y5MB8NBQZmZW1hbGUfDAICZGQCCQ8PFgIfDgVsaHR0cDovL21lZGlhLmRhdGluZy5kay9Vc2Vycy82M2U5N2U2Mi0xM2JhLTQ4OTgtOTczZC0yYjI1NjhjMjBhMzIvUGhvdG9zLzYzNTE0MzYxMzk1MzI5OTMzMF9XZWJUaHVtYm5haWwuanBnZGQCCw8PFgYfBgUJUmlzc2tvdjkwHw0FBmZlbWFsZR8MAgJkZAINDxYCHwYFBkt2aW5kZWQCDw8WAh8GBQIyM2QCEQ8WAh8GBRtCb3IgaSA8Yj5SaXNza292PC9iPiAoODI0MClkAhMPDxYGHwYFCVJpc3Nrb3Y5MB8NBQZmZW1hbGUfDAICZGQCFQ8WAh8GBQhrw6ZyZXN0ZWQCFw9kFgICAQ8WAh8GBQ9taXQgbsOmcm9tcsOlZGVkAhkPZBYEAgEPFgIfBgUCMjNkAgMPFgIfBgUCMjlkAgcPZBYCAgEPZBYCAgEPZBYCAgEPZBYCAgEPZBYCAgEPZBYCAgEPZBYCZg9kFgICAw8QZGQWAGQCCQ9kFhACAQ9kFgICAQ9kFgICAQ9kFhICAQ8PFgIfB2UWAh8IBQJub2QCAw8PFgYfDQUHaXNNYXRjaB8HZR8MAgIWAh8IBQJub2QCBQ8PFgIfB2UWAh8IBQJub2QCBw8PFgYfDQUHaXNNYXRjaB8HZR8MAgIWAh8IBQJub2QCCQ8PFgIfB2UWAh8IBQJub2QCCw8PFgYfDQUHaXNNYXRjaB8HZR8MAgIWAh8IBQJub2QCDQ8PFgYfDQUHaXNNYXRjaB8HZR8MAgIWAh8IBQJub2QCDw8PFgYfDQUHaXNNYXRjaB8HZR8MAgIWAh8IBQJub2QCEQ8PFgQfDgUlL0dyYXBoaWNzL1VzZXJQYWdlcy9tYXRjaC93aGVlbC81LnBuZx8HZRYCHwgFAm5vZAIDD2QWAgIBD2QWAgIBD2QWAgIBDxYCHgtfIUl0ZW1Db3VudAIBFgJmD2QWAgIBDw8WBB8NBS9jcm9wcGVkSW1hZ2VDb250YWluZXIgY3JvcHBlZEltYWdlQ29udGFpbmVySGlnaB8MAgJkFgICAQ8PFgQfDgVwaHR0cDovL21lZGlhLmRhdGluZy5kay9Vc2Vycy82M2U5N2U2Mi0xM2JhLTQ4OTgtOTczZC0yYjI1NjhjMjBhMzIvUGhvdG9zLzk3MDQ2MC82MzUxNDM2NDA3MjE1NzY0NTFfV2ViTm9ybWFsLmpwZx8HZRYEHwEFCXRvcDotN3B4Ox8IBQJub2QCBQ9kFgQCAQ8WAh8DaGQCBQ8WAh8DaBYCAgEPDxYCHwNoZGQCCw8PFgIfA2hkFgJmD2QWAgIBDxYCHw8C/////w9kAg0PDxYCHwNoZGQCDw9kFgJmD2QWAgIBD2QWBgIBDw8WAh8FBRsva29udHJvbHBhbmVsL3Byb2ZpbGJpbGxlZGVkZAIDDw8WAh8FBRcva29udHJvbHBhbmVsL2ZvdG9hbGJ1bWRkAgUPDxYCHwUFGC9rb250cm9scGFuZWwvcHJvZmlsaW5mb2RkAhEPFgIfA2gWAmYPZBYCAgEPDxYCHwNoZGQCEw9kFgYCAQ8PFgIfBQVffi9VSS9Gb3Jtcy9Vc2Vycy9TYWxlcy9QdXJjaGFzZS9DaG9vc2VQcm9kdWN0R3JvdXAuYXNweD9Qcm9kdWN0R3JvdXBJRD0xJmd3PTgmZ3d0cmlnZ2VyPTQxMDcxOTdkZAIDDw8WAh8FBV9+L1VJL0Zvcm1zL1VzZXJzL1NhbGVzL1B1cmNoYXNlL0Nob29zZVByb2R1Y3RHcm91cC5hc3B4P1Byb2R1Y3RH
------------63f74b64334e4c8fad891bd1f969402b
Content-Disposition: form-data; name="Content-Disposition: form-data; name="__EVENTVALIDATION""
/wEdAAx3p75HULRe2VjfDQjIZMUyqvYfpfS3XNXzjmCqwTcmLQjHP/vbZXJQPtJKH09iDnpjSbMVDuj6latN4D+WJQ0GCMex73PUPLDd7cpHB4eUSvZX/tYXeQmcSauQTEcfDN4gzLbTMorrzQbwiAG5eIHPlTUVcvEvYPdgk6jbJTrWAjYX1hFGBRb9pN45cUrARCzIG4TG+xGWOKHjJPrtLGHRsD92s0QQ5wfKXLUKe9jk89T+K49gmSvDB5JCjlvQU0Q=
------------63f74b64334e4c8fad891bd1f969402b
Content-Disposition: form-data; name="Content-Disposition: form-data; name="ctl00$ctl00$ctl00$ctl00$cphContent$cphMain$cphLeftMenu$hfRemoveFavoritID""
------------63f74b64334e4c8fad891bd1f969402b
Content-Disposition: form-data; name="Content-Disposition: form-data; name="ctl00$ctl00$ctl00$ctl00$cphContent$cphMain$cphLeftMenu$hfAddFilterID""
4108031
------------63f74b64334e4c8fad891bd1f969402b
Content-Disposition: form-data; name="Content-Disposition: form-data; name="ctl00$ctl00$ctl00$ctl00$cphContent$cphMain$cphLeftMenu$hfRemoveFilterID""
------------63f74b64334e4c8fad891bd1f969402b
Content-Disposition: form-data; name="Content-Disposition: form-data; name="ctl00$ctl00$ctl00$ctl00$cphContent$cphMain$cphMain$userInfo$tbSubject""
Hej :)
------------63f74b64334e4c8fad891bd1f969402b
Content-Disposition: form-data; name="Content-Disposition: form-data; name="ctl00$ctl00$ctl00$ctl00$cphContent$cphMain$cphMain$userInfo$MultiUpload$fuFallbackGalleryImageUpload""
filename=
------------63f74b64334e4c8fad891bd1f969402b--
如何构建此帖子?
我一直在使用提示from this guide (the FormUpload answer)。我发布的数据是这样的:
var namValCollection = new Dictionary<string,string>();
namValCollection.Add("Content-Disposition: form-data; name=\"__EVENTTARGET\"", "ctl00$ctl00$ctl00$ctl00$cphContent$cphMain$cphMain$userInfo$btnSend");
namValCollection.Add("Content-Disposition: form-data; name=\"__EVENTARGUMENT\"", string.Empty);
namValCollection.Add("Content-Disposition: form-data; name=\"__VIEWSTATE\"", "/wEPDwULLTE3NTkzNDk2NjAPFgIeE1ZhbGlkYXRlUmVxdWVzdE1vZGUCARYCZg9kFgJmD2QWAmYPZBYCZg9kFgICAQ9kFgICAw8WAh4Fc3R5bGUFEnBvc2l0aW9uOnJlbGF0aXZlOxYCAgEPZBYEAgEPFgIeB2VuY3R5cGUFE211bHRpcGFydC9mb3JtLWRhdGEWCAIBD2QWAgIHD2QWAgIDD2QWCAIDDw8WAh4HVmlzaWJsZWhkZAIFDw8WAh4ITWFpbEd1aWQoKVhTeXN0ZW0uR3VpZCwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5JDEwNGVkZjRmLTM4MTktNDc2Yi04ZDY4LTQ3OTc1ZmNjYzhhZmQWBgIBD2QWAmYPZBYOAgEPDxYCHgtOYXZpZ2F0ZVVybAUZL3Byb2ZpbC80MTA3MTk3L1Jpc3Nrb3Y5MGQWAmYPDxYCHgRUZXh0BRFSaXNza292OTAsIDIzIMOlcmRkAgMPZBYCZg8PFgIeDUFsdGVybmF0ZVRleHRlFgIeCmdhbGxlcnlpbWcFAm5vZAIFDw9kFgIfAQUncG9zaXRpb246YWJzb2x1dGU7dG9wOjIzcHg7cmlnaHQ6MjE1cHg7ZAIHDw8WBB8GBQ5TZW5kIGVuIGJlc2tlZB8FBQxqYXZhc2NyaXB0OjsWBB4Hb25jbGljawVTU2hvd05ld01vZGFsKCdjcGhDb250ZW50X2NwaE1haW5fY3BoTWFpbl91c2VySW5mb19TZW5kTmV3TWFpbFBvcHVwJyk7Rml4Q0tFZGl0b3IoKTsfAQUKcmlnaHQ6OXB4O2QCCQ8PFgIfA2hkZAILDw8WAh8DaGRkAg0PDxYCHwNoZGQCAg9kFgICAQ9kFgICAQ9kFgICAQ9kFgJmD2QWHAIBDxYCHwYFNlNrcml2IGJlc2tlZCB0aWwgPHNwYW4gY2xhc3M9ImZlbWFsZSI+Umlzc2tvdjkwPC9zcGFuPmQCBQ8PFgIfA2hkZAIHDw8WAh8DaGRkAgkPZBYKAgEPD2QWAh4Jb25rZXlkb3duZGQCBQ9kFgJmDw8WBB4GSGVpZ2h0GwAAAAAAwGJAAQAAAB4EXyFTQgKAAWRkAgcPDxYEHghDc3NDbGFzcwUrc2VuZE1haWwgZGF0aW5nQnV0dG9uR3JlZW4zMCBkYXRpbmdCdXR0b24zMB8MAgJkZAIJDxYCHwkFQHN3YXBWaXNpYmlsaXR5KCdjcGhDb250ZW50X2NwaE1haW5fY3BoTWFpbl91c2VySW5mb19hZGRJbWFnZXMnKTsWAgIBDw8WAh8HZRYCHwgFAm5vZAILD2QWBAIBD2QWBAIBDxYCHwNoZAIDDw8WBB8NBSJkYXRpbmdCdXR0b25HcmVlbjIyIGRhdGluZ0J1dHRvbjIyHwwCAmRkAgMPPCsACQBkAgsPDxYEHghJbWFnZVVybAVsaHR0cDovL21lZGlhLmRhdGluZy5kay9Vc2Vycy82M2U5N2U2Mi0xM2JhLTQ4OTgtOTczZC0yYjI1NjhjMjBhMzIvUGhvdG9zLzYzNTE0MzYxMzk1MzI5OTMzMF9XZWJUaHVtYm5haWwuanBnHwdlFgIfCAUCbm9kAg0PDxYGHwYFCVJpc3Nrb3Y5MB8NBQZmZW1hbGUfDAICZGQCDw8WAh8GBQZLdmluZGVkAhEPFgIfBgUCMjNkAhMPFgIfBgUbQm9yIGkgPGI+Umlzc2tvdjwvYj4gKDgyNDApZAIVDw8WAh8DaGQWAgIBDxYCHwZlZAIXDw8WBh8GBQlSaXNza292OTAfDQUGZmVtYWxlHwwCAmRkAhkPFgIfBgUIa8OmcmVzdGVkAhsPZBYCAgEPFgIfBgUPbWl0IG7DpnJvbXLDpWRlZAIdD2QWBAIBDxYCHwYFAjIzZAIDDxYCHwYFAjI5ZAIDD2QWAmYPZBYCAgEPZBYCAgEPZBYCAgEPZBYCZg9kFhoCAQ8PFgYfBgUJUmlzc2tvdjkwHw0FBmZlbWFsZR8MAgJkZAIDD2QWAgIBDw8WBh8GBQlSaXNza292OTAfDQUGZmVtYWxlHwwCAmRkAgUPZBYEAgEPDxYGHwYFCVJpc3Nrb3Y5MB8NBQZmZW1hbGUfDAICZGQCAw8WAh8GBQNodW5kAgcPZBYCAgEPDxYGHwYFCVJpc3Nrb3Y5MB8NBQZmZW1hbGUfDAICZGQCCQ8PFgIfDgVsaHR0cDovL21lZGlhLmRhdGluZy5kay9Vc2Vycy82M2U5N2U2Mi0xM2JhLTQ4OTgtOTczZC0yYjI1NjhjMjBhMzIvUGhvdG9zLzYzNTE0MzYxMzk1MzI5OTMzMF9XZWJUaHVtYm5haWwuanBnZGQCCw8PFgYfBgUJUmlzc2tvdjkwHw0FBmZlbWFsZR8MAgJkZAINDxYCHwYFBkt2aW5kZWQCDw8WAh8GBQIyM2QCEQ8WAh8GBRtCb3IgaSA8Yj5SaXNza292PC9iPiAoODI0MClkAhMPDxYGHwYFCVJpc3Nrb3Y5MB8NBQZmZW1hbGUfDAICZGQCFQ8WAh8GBQhrw6ZyZXN0ZWQCFw9kFgICAQ8WAh8GBQ9taXQgbsOmcm9tcsOlZGVkAhkPZBYEAgEPFgIfBgUCMjNkAgMPFgIfBgUCMjlkAgcPZBYCAgEPZBYCAgEPZBYCAgEPZBYCAgEPZBYCAgEPZBYCAgEPZBYCZg9kFgICAw8QZGQWAGQCCQ9kFhACAQ9kFgICAQ9kFgICAQ9kFhICAQ8PFgIfB2UWAh8IBQJub2QCAw8PFgYfDQUHaXNNYXRjaB8HZR8MAgIWAh8IBQJub2QCBQ8PFgIfB2UWAh8IBQJub2QCBw8PFgYfDQUHaXNNYXRjaB8HZR8MAgIWAh8IBQJub2QCCQ8PFgIfB2UWAh8IBQJub2QCCw8PFgYfDQUHaXNNYXRjaB8HZR8MAgIWAh8IBQJub2QCDQ8PFgYfDQUHaXNNYXRjaB8HZR8MAgIWAh8IBQJub2QCDw8PFgYfDQUHaXNNYXRjaB8HZR8MAgIWAh8IBQJub2QCEQ8PFgQfDgUlL0dyYXBoaWNzL1VzZXJQYWdlcy9tYXRjaC93aGVlbC81LnBuZx8HZRYCHwgFAm5vZAIDD2QWAgIBD2QWAgIBD2QWAgIBDxYCHgtfIUl0ZW1Db3VudAIBFgJmD2QWAgIBDw8WBB8NBS9jcm9wcGVkSW1hZ2VDb250YWluZXIgY3JvcHBlZEltYWdlQ29udGFpbmVySGlnaB8MAgJkFgICAQ8PFgQfDgVwaHR0cDovL21lZGlhLmRhdGluZy5kay9Vc2Vycy82M2U5N2U2Mi0xM2JhLTQ4OTgtOTczZC0yYjI1NjhjMjBhMzIvUGhvdG9zLzk3MDQ2MC82MzUxNDM2NDA3MjE1NzY0NTFfV2ViTm9ybWFsLmpwZx8HZRYEHwEFCXRvcDotN3B4Ox8IBQJub2QCBQ9kFgQCAQ8WAh8DaGQCBQ8WAh8DaBYCAgEPDxYCHwNoZGQCCw8PFgIfA2hkFgJmD2QWAgIBDxYCHw8C/////w9kAg0PDxYCHwNoZGQCDw9kFgJmD2QWAgIBD2QWBgIBDw8WAh8FBRsva29udHJvbHBhbmVsL3Byb2ZpbGJpbGxlZGVkZAIDDw8WAh8FBRcva29udHJvbHBhbmVsL2ZvdG9hbGJ1bWRkAgUPDxYCHwUFGC9rb250cm9scGFuZWwvcHJvZmlsaW5mb2RkAhEPFgIfA2gWAmYPZBYCAgEPDxYCHwNoZGQCEw9kFgYCAQ8PFgIfBQVffi9VSS9Gb3Jtcy9Vc2Vycy9TYWxlcy9QdXJjaGFzZS9DaG9vc2VQcm9kdWN0R3JvdXAuYXNweD9Qcm9kdWN0R3JvdXBJRD0xJmd3PTgmZ3d0cmlnZ2VyPTQxMDcxOTdkZAIDDw8WAh8FBV9+L1VJL0Zvcm1zL1VzZXJzL1NhbGVzL1B1cmNoYXNlL0Nob29zZVByb2R1Y3RHcm91cC5hc3B4P1Byb2R1Y3RH");
namValCollection.Add("Content-Disposition: form-data; name=\"__EVENTVALIDATION\"", "/wEdAAx3p75HULRe2VjfDQjIZMUyqvYfpfS3XNXzjmCqwTcmLQjHP/vbZXJQPtJKH09iDnpjSbMVDuj6latN4D+WJQ0GCMex73PUPLDd7cpHB4eUSvZX/tYXeQmcSauQTEcfDN4gzLbTMorrzQbwiAG5eIHPlTUVcvEvYPdgk6jbJTrWAjYX1hFGBRb9pN45cUrARCzIG4TG+xGWOKHjJPrtLGHRsD92s0QQ5wfKXLUKe9jk89T+K49gmSvDB5JCjlvQU0Q=");
namValCollection.Add("Content-Disposition: form-data; name=\"ctl00$ctl00$ctl00$ctl00$cphContent$cphMain$cphLeftMenu$hfRemoveFavoritID\"", string.Empty);
namValCollection.Add("Content-Disposition: form-data; name=\"ctl00$ctl00$ctl00$ctl00$cphContent$cphMain$cphLeftMenu$hfAddFilterID\"", messages.Profile.ProfileId);
namValCollection.Add("Content-Disposition: form-data; name=\"ctl00$ctl00$ctl00$ctl00$cphContent$cphMain$cphLeftMenu$hfRemoveFilterID\"", string.Empty);
namValCollection.Add("Content-Disposition: form-data; name=\"ctl00$ctl00$ctl00$ctl00$cphContent$cphMain$cphMain$userInfo$tbSubject\"", messages.Subect);
namValCollection.Add("Content-Disposition: form-data; name=\"ctl00$ctl00$ctl00$ctl00$cphContent$cphMain$cphMain$userInfo$MultiUpload$fuFallbackGalleryImageUpload\"", "filename=");
container.Add(new Cookie("DBED", "1") { Expires = DateTime.Now.AddHours(1), Domain = "domain.com" });
container.Add(new Cookie("specialoffer", "1") { Expires = DateTime.Now.AddHours(1), Domain = "domain.com" });
container.Add(new Cookie(".asdsad1024Auth", "3AE78C55993A13AC7374E51D91F6601408C151D0BD795DFAC41E056A737B858EE487C1F673925A1CA485AB0579C0E7EB3589C3036DAB9B549972904C6A7DBD480CsdE61E571F273B21B8861D5690ED7469815C8D4CD7EA68494D07FCD5054929432CF6093771D811A0F0DEAE53C0E69AE148CB2E1D0…") { Expires = DateTime.Now.AddHours(1), Domain = "dating.dk" });
container.Add(new Cookie("ASP.NET_SessionId", "qin2ix2km0cpvtawphvjyupj") { Expires = DateTime.Now.AddHours(1), Domain = "domain.com" });
container.Add(new Cookie("InfinityScrollPositions", "Userhome%3A600") { Expires = DateTime.Now.AddHours(1), Domain = "domain.com" });
container.Add(new Cookie("__utma", "16287657.943558949.1379878207.1379878207.1379878207.1") { Expires = DateTime.Now.AddHours(1), Domain = "domain.com" });
container.Add(new Cookie("__utmb", "__utmb=16287657.64.10.1379878207") { Expires = DateTime.Now.AddHours(1), Domain = "domain.com" });
container.Add(new Cookie("InfinityScrollPositions", "Userhome%3A600") { Expires = DateTime.Now.AddHours(1), Domain = "domain.com" });
就个人而言,我认为问题出在以下字段中,我不知道如何复制。在上面的代码中,我在字典中添加了string.empty。
这是适用于浏览器版本的字段:
------WebKitFormBoundaryTbZqL4CZcQwC7K58
Content-Disposition: form-data; name="ctl00$ctl00$ctl00$ctl00$cphContent$cphMain$cphMain$userInfo$MultiUpload$fuFallbackGalleryImageUpload"; filename=""
Content-Type: application/octet-stream
如果有人有兴趣,我会使用以下代码发布帖子:
public static class FormUpload
{
private static readonly Encoding encoding = Encoding.UTF8;
public static HttpWebResponse MultipartFormDataPost(string postUrl, string userAgent, Dictionary<string, string> postParameters, CookieContainer container)
{
string formDataBoundary = String.Format("----------{0:N}", Guid.NewGuid());
string contentType = "multipart/form-data; boundary=" + formDataBoundary;
byte[] formData = GetMultipartFormData(postParameters, formDataBoundary);
return PostForm(postUrl, userAgent, contentType, formData, container);
}
private static HttpWebResponse PostForm(string postUrl, string userAgent, string contentType, byte[] formData, CookieContainer container)
{
HttpWebRequest request = WebRequest.Create(postUrl) as HttpWebRequest;
if (request == null)
{
throw new NullReferenceException("request is not a http request");
}
// Set up the request properties.
request.Method = "POST";
request.ContentType = contentType;
request.UserAgent = userAgent;
request.CookieContainer = container;
request.UserAgent =
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11";
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
request.Headers.Add("Accept-Encoding", "gzip,deflate,sdch");
request.Headers.Add("Accept-Language", "en-US,en;q=0.8,da;q=0.6");
request.Headers.Add("Cache-Control", "max-age=0");
request.ContentLength = formData.Length;
// You could add authentication here as well if needed:
// request.PreAuthenticate = true;
// request.AuthenticationLevel = System.Net.Security.AuthenticationLevel.MutualAuthRequested;
// request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(System.Text.Encoding.Default.GetBytes("username" + ":" + "password")));
// Send the form data to the request.
using (Stream requestStream = request.GetRequestStream())
{
requestStream.Write(formData, 0, formData.Length);
requestStream.Close();
}
return request.GetResponse() as HttpWebResponse;
}
private static byte[] GetMultipartFormData(Dictionary<string, string> postParameters, string boundary)
{
Stream formDataStream = new System.IO.MemoryStream();
bool needsCLRF = false;
foreach (var param in postParameters)
{
// Thanks to feedback from commenters, add a CRLF to allow multiple parameters to be added.
// Skip it on the first parameter, add it to subsequent parameters.
if (needsCLRF)
formDataStream.Write(encoding.GetBytes("\r\n"), 0, encoding.GetByteCount("\r\n"));
needsCLRF = true;
string postData = string.Format("--{0}\r\nContent-Disposition: form-data; name=\"{1}\"\r\n\r\n{2}",
boundary,
param.Key,
param.Value);
formDataStream.Write(encoding.GetBytes(postData), 0, encoding.GetByteCount(postData));
}
// Add the end of the request. Start with a newline
string footer = "\r\n--" + boundary + "--\r\n";
formDataStream.Write(encoding.GetBytes(footer), 0, encoding.GetByteCount(footer));
// Dump the Stream into a byte[]
formDataStream.Position = 0;
byte[] formData = new byte[formDataStream.Length];
formDataStream.Read(formData, 0, formData.Length);
formDataStream.Close();
return formData;
}
public class FileParameter
{
public byte[] File { get; set; }
public string FileName { get; set; }
public string ContentType { get; set; }
public FileParameter(byte[] file) : this(file, null) { }
public FileParameter(byte[] file, string filename) : this(file, filename, null) { }
public FileParameter(byte[] file, string filename, string contenttype)
{
File = file;
FileName = filename;
ContentType = contenttype;
}
}
}
好的,很多代码和文字。任何有使用multipart / form-data制作HTTP帖子经验的人都可能会给出一些提示。 “302发现”可能是一个提示,我不知道。
非常感谢任何可以指向我方向的帮助!
答案 0 :(得分:3)
首先,正如您可能看到的那样,您正在复制参数信息。
原帖:
------WebKitFormBoundaryTbZqL4CZcQwC7K58
Content-Disposition: form-data; name="__EVENTTARGET"
你的帖子:
------------63f74b64334e4c8fad891bd1f969402b
Content-Disposition: form-data; name="Content-Disposition: form-data; name="__EVENTTARGET""
使用您正在使用的代码,您只需使用字典中的参数名称,因为代码已添加Content-Disposition: form-data; name=
:
string postData = string.Format("--{0}\r\nContent-Disposition: form-data; name=\"{1}\"\r\n\r\n{2}",
boundary, //^^^Right Here!^^^^
param.Key,
param.Value);
我的建议是保留FormUpload代码,只需更改构建字典的方式。
//Change this...
namValCollection.Add("Content-Disposition: form-data; name=\"__EVENTTARGET\"", "ctl00$ctl00$ctl00$ctl00$cphContent$cphMain$cphMain$userInfo$btnSend");
namValCollection.Add("Content-Disposition: form-data; name=\"__EVENTARGUMENT\"", string.Empty);
....
//...into this:
namValCollection.Add("__EVENTTARGET", "ctl00$ctl00$ctl00$ctl00$cphContent$cphMain$cphMain$userInfo$btnSend");
namValCollection.Add("__EVENTARGUMENT", string.Empty);
....
++++++++++++++++++++++++++++++++++++++
继续下一个问题,你有点删除了处理文件上传的FormUpload代码中的一个非常重要的部分。在原始POST中,即使您实际上没有上传文件,也会发送一个文件参数。您可以像使用the question you linked一样使用FormUpload.FileParameter
类,只需进行一些小调整:
namValCollection.Add("ctl00$ctl00$ctl00$ctl00$cphContent$cphMain$cphMain$userInfo$MultiUpload$fuFallbackGalleryImageUpload", new FormUpload.FileParameter(new byte[0]));
//Just use 'new FormUpload.FileParameter(new byte[0])' in place of actual file information if your not uploading a file.
将其添加回FormUpload代码,但请务必更改一行:
if (param.Value is FileParameter)
{
FileParameter fileToUpload = (FileParameter)param.Value;
string header = string.Format("--{0}\r\nContent-Disposition: form-data; name=\"{1}\"; filename=\"{2}\";\r\nContent-Type: {3}\r\n\r\n",
boundary,
param.Key,
fileToUpload.FileName ?? String.Empty, //Change this line from 'fileToUpload.FileName ?? param.Key.' to 'fileToUpload.FileName ?? String.Empty,'
fileToUpload.ContentType ?? "application/octet-stream");
formDataStream.Write(encoding.GetBytes(header), 0, encoding.GetByteCount(header));
formDataStream.Write(fileToUpload.File, 0, fileToUpload.File.Length);
}
else
{
string postData = string.Format("--{0}\r\nContent-Disposition: form-data; name=\"{1}\"\r\n\r\n{2}",
boundary,
param.Key,
param.Value);
formDataStream.Write(encoding.GetBytes(postData), 0, encoding.GetByteCount(postData));
}