【问题标题】:Golang: No response from get.http( url )Golang:get.http(url)没有响应
【发布时间】:2015-10-12 02:04:51
【问题描述】:
http://plg1.yumenetworks.com/dynamic_preroll_playlist.vast2xml?domain=2210cZDclAme

当我使用 http.Get 从服务器调用上面的链接时,我得到了这个响应,一个空的 XML:

<?xml version="1.0" encoding="UTF-8"?>
<VAST version="2.0">

</VAST>

但是当我从浏览器调用它时,它会响应一个有效的 XML,当我从本地服务器调用链接时它也可以工作。

func getXmlVast(url string) (string, error) {

        resp, err := http.Get(url)
        if err != nil {
            return "", err
        }
        defer resp.Body.Close()
        // read xml http response
        xmlData, err := ioutil.ReadAll(resp.Body)
        if err != nil {
            return "", err
        }
        return string(xmlData), nil
    }

有没有人有想法。

提前谢谢你

【问题讨论】:

  • 这是来自浏览器的空 xml 响应。也许您从浏览器获得结果是因为您已登录,或者您的 cookie 中有一些东西。尝试从您的浏览器打开“私人标签”并检查您的网址
  • 它有效,我从本地服务器尝试过,它也有效
  • 我的浏览器也得到了一个空的 XML,所以我猜问题出在 Go 之外。您需要弄清楚是什么让您的浏览器和“本地服务器”如此特别才能接收预期的内容。
  • 嗯,那么我认为它与 geolocation 有关系,因为我在西班牙,服务器在法国,而你来自英国 ^^。来自西班牙的它可以工作,而来自其他位置则没有。
  • 不要使用浏览器进行测试,这会添加其他改变行为的因素。我用 curl 和 Go 得到了完整的回应。您没有检查响应代码或标头,当响应不正确时,可能会有更多信息。

标签: xml http url go


【解决方案1】:

我认为您收到的是空响应,因为您没有指定响应标头类型。尝试添加:

resp, err := http.Get(url)
resp.Header.Add("Accept", "application/xml")
resp.Header.Add("Content-Type","application/xml; charset=utf-8")

if err != nil {
     return "", err
}

也许这会解决你的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-12
    • 2018-08-23
    • 1970-01-01
    • 2021-10-29
    • 2013-06-29
    • 1970-01-01
    • 2013-01-11
    相关资源
    最近更新 更多