简体   繁体   English

Golang HTTP XML解析问题

[英]Golang HTTP XML Parsing issue

I'm trying to access an XML file available online, but after the GET the XML format disappears. 我正在尝试访问在线提供的XML文件,但是在GET之后,XML格式消失了。
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>

See: https://www.whatismybrowser.com/detect/what-http-headers-is-my-browser-sending 参见: 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. 我希望这有帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM