donfrigo donfrigo - 1 month ago 9
HTTP Question

Golang HTTP XML Parsing issue

I'm trying to access an XML file available online, but after the GET the XML format disappears.

What am I doing wrong?

Thank you so much!

func getHttp(address string) string{
resp, err := http.Get(address)
resp.Header.Add("Content-Type","application/xml; charset=utf-8")
if err != nil {
panic(err)
}

defer resp.Body.Close()

data, err := ioutil.ReadAll(resp.Body)
if err != nil {
panic(err)
}

return (string(data))
}


The new format looks like this:

{"SessionKey":"229eaeaa9fb14a0d85ff38ae4e0c7870_ecilpojl_018FC93424D13ECC0908CE5BC5E3F86B","Query":{"Country":"GB","Currency":"GBP","Locale":"en-gb","Adults":1,"Children":0,"Infants":0,"OutboundDate":"2016-10-08","LocationSchema":"Default","CabinClass":"Economy","GroupPricing":false},


instead of

<SessionKey>229eaeaa9fb14a0d85ff38ae4e0c7870_ecilpojl_018FC93424D13ECC0908CE5BC5E3F86B</SessionKey>
<Query>
<Country>GB</Country>
<Currency>GBP</Currency>
<Locale>en-gb</Locale>
<Adults>1</Adults>
<Children>0</Children>
<Infants>0</Infants>
<OutboundDate>2016-10-08</OutboundDate>
<LocationSchema>Default</LocationSchema>
<CabinClass>Economy</CabinClass>
<GroupPricing>false</GroupPricing>
</Query>

Amd Amd
Answer

See: https://www.whatismybrowser.com/detect/what-http-headers-is-my-browser-sending

Try this (and replace the web address with yours):

package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
)

func main() {
    fmt.Println(getHttp(`http://stackoverflow.com/`))
}
func getHttp(url string) string {    
    client := &http.Client{}
    req, err := http.NewRequest("GET", url, nil)
    if err != nil {
        panic(err)
    }
    req.Header.Set("ACCEPT", "application/xhtml+xml,application/xml")
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()
    data, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        panic(err)
    }
    return string(data)
}

I hope this helps.

Comments