Я сравнил три запроса в Fiddler 4 и понял, что единственное различие (кроме некоторых других заголовков, которые не влияют на поведение) между сценарием VBS и WebClient и HttpWebRequest заключается в том, что управляемые API отправляют заголовок Expect: 100-continue
и Сценарий vbs не поддерживает.
Это может быть проблемой, если программное обеспечение, работающее на устройстве сжатия, не поддерживает это.
Пожалуйста, попробуйте следующее, что говорит HttpWebRequest не отправлять этот заголовок:
Для HttpWebRequest вы можете просто запретить отправку этого сообщения:
request.ServicePoint.Expect100Continue = false;
Примечание: Для WebClient назначение требует доступа к объекту HttpWebRequest, используемому внутри, но это "защищено" доступ к модификатору и можно обойти.
Перед установкой этого значения:
POST http://oguzozgul.com.tr/getVar.cgi HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: oguzozgul.com.tr
Content-Length: 15
Expect: 100-continue
Connection: Keep-Alive
online_pressure
После установки этого значения:
POST http://oguzozgul.com.tr/getVar.cgi HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: oguzozgul.com.tr
Content-Length: 15
Connection: Keep-Alive
online_pressure
Я также хочу поставить скрипт vb запросите здесь, чтобы вы могли увидеть и другие отличия. Accept-Encoding и некоторые другие заголовки также не отправляются по умолчанию:
POST http://oguzozgul.com.tr/getVar.cgi HTTP/1.1
Accept: */*
Content-Type: application/x-www-form-urlencoded
Accept-Language: tr,en-US;q=0.8,en-GB;q=0.7,en;q=0.5,zh-Hans-CN;q=0.3,zh-Hans;q=0.2
UA-CPU: AMD64
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.3; Win64; x64; Trident/7.0; .NET4.0E; .NET4.0C; Tablet PC 2.0; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; wbx 1.0.0; Zoom 3.6.0; wbxapp 1.0.0)
Host: oguzozgul.com.tr
Content-Length: 15
Connection: Keep-Alive
Pragma: no-cache
online_pressure