3

我在 appengine 上使用 golang(go 版本 go1.2.1 (appengine-1.9.3) linux/386)

我的新应用程序在尝试读取云存储文件的内容时遇到问题。我可以通过 google-api-go-client 获取对象信息,MediaLink 给了我这样的 URL:

https://www.googleapis.com/storage/v1beta2/b/bucket/o/profile%2Fpath_to_the_file.jpeg?generation=1402107955298000&alt=media

在 dev_app_server 或 appengine 上,当我尝试 urlfetch 这个 jpeg 时,我得到“404 Not Found”。当我将相同的 URL 粘贴到浏览器中时,我得到一个 307 重定向,然后是一个 200 的新 URL,看起来像这样:

https://storage.googleapis.com/bucket/profile%2Fpath_to_the_file.jpeg?generation=1402107955298000

我尝试了一个测试,只是对 www.googleapis.com URL 和 storage.googleapis.com URL 做了一个 urlfetch 请求。第一个 URL 给出 404,但第二个 URL 给出 200 OK。我在另一个应用程序中工作的代码几乎相同 - 为什么在这种情况下我会得到错误的 404?

谢谢,蒂姆。

4

1 回答 1

1

显然这是 golang 如何解析 URL 字符串并将其转换为 net/url 结构的问题。您可以使用 URL.Opaque 字段来解决此问题。我没有编写此代码,但这里有一个示例,说明 googleapi 如何解决同样的问题,以便在路径中保留 %2F 分隔符。

http://play.golang.org/p/TkKRROJTfb

于 2014-06-09T21:58:52.373 回答