Удаление элементов веб-запроса HTTP - PullRequest
0 голосов
/ 12 декабря 2011

Я хочу удалить определенные элементы из HTTPWebRequest Я прикрепил элементы, которые мне нужно удалить в изображении (элементы окрашены в красный цвет):

enter image description here

Я пробовал:

 System.Net.ServicePointManager.Expect100Continue = False

для одного из элементов, но безрезультатно Я также попробовал:

webRequest.Headers.Remove(HttpRequestHeader.Connection)

Любая помощь будет очень признательна.

вот мой код:

    Dim content As blah.Content = New blah.Content
    Dim inputguid As String = Guid.NewGuid.ToString
    Dim service As blah.WebService = New blah.WebService
    Dim str As New System.Xml.XmlDocument
    Dim payload As blah.Payload = New blah.Payload
    System.Net.ServicePointManager.Expect100Continue = False
    'payload
    str.LoadXml(xmlstr)

    'manifest
    service.payloadManifest = New blah.PayloadManifest
    service.payloadManifest.manifest = New blah.Manifest() {New blah.Manifest}
    service.payloadManifest.manifest(0).element = "GetVehicleServiceHistory"
    service.payloadManifest.manifest(0).namespaceURI = "http://www.starstandards.org/STAR"
    service.payloadManifest.manifest(0).contentID = "Content0"
    service.payloadManifest.manifest(0).version = "2.01"
    service.SoapVersion = SoapProtocolVersion.Soap11
    service.UserAgent = "VendorName"

    payload.content = New blah.Content() {content}
    ReDim Preserve payload.content(0)
    payload.content(0).Any = str.DocumentElement
    payload.content(0).id = "Content0"

    service.Timeout = -1
    service.Url = "http://localhost:8080"
    service.ProcessMessage(payload)

, а затем в файле reference.vb моего веб-сервиса:

    Protected Overrides Function GetWebRequest(ByVal uri As Uri) As WebRequest
        Dim webRequest As HttpWebRequest = DirectCast(MyBase.GetWebRequest(uri), HttpWebRequest)
        Dim sp As ServicePoint
        sp = ServicePointManager.FindServicePoint(New Uri(Me.Url))
        sp.ConnectionLeaseTimeout = 0
        webRequest.Headers.Remove(HttpRequestHeader.Connection)
        webRequest.KeepAlive = False
        webRequest.Timeout = 100000
        webRequest.ReadWriteTimeout = 100000

        Return webRequest
    End Function

1 Ответ

1 голос
/ 12 декабря 2011

Вы хотели бы избавиться от некоторых более подробных заголовков из своего HTTP-сообщения?
Одна простая вещь, которую вы можете сделать, это:

webRequest.ProtocolVersion = HttpVersion.Version10

Некоторые из этих заголовков не являютсяв версии 1.0 HTTP и существуют только в версии 1.1 ( Ключевые отличия ), поэтому при переходе на версию 1.0 следует позаботиться о многих из этих «дополнительных заголовков».

Если вы хотите избавиться от заголовка Content-Length, то я почти уверен, что вам придется переключиться с POST на GET.Если вы делаете POST, то обычно требуется Content-Length!

Если это просто не для вас, то вам нужно будет сделать последний шаг и прекратить использовать HttpWebRequest (который выполняетбольшая часть HTTP работает для вас) и просто создайте простое TCP-соединение (возможно, с классом TcpClient ?) и укажите точное HTTP-сообщение, которое вы хотите отправить.Это намного больше работы, но это, вероятно, единственный способ отправить очень конкретное сообщение, где вы контролируете все используемые заголовки HTTP.

Надеюсь, это поможет!

...