http.Client拒绝使用>不支持的协议方案“”<即使它已经确定了

时间:2016-05-31 14:47:48

标签: http go https

我尝试将一些视频上传到youtube。在堆栈的某个地方,它归结为http.Client。这部分表现得很奇怪。

请求和所有内容都在youtube包中创建。

最后完成我的请求后,它失败了:

Error uploading video: Post https://www.googleapis.com/upload/youtube/v3/videos?alt=json&part=snippet%2Cstatus&uploadType=multipart: Post : unsupported protocol scheme ""

我稍微调试了一下库并打印了URL.Scheme内容。作为字符串,结果为https并位于[]byte [104 116 116 112 115]

第288行的

https://golang.org/src/net/http/transport.go是抛出错误的位置。

https://godoc.org/google.golang.org/api/youtube/v3我使用的库

我准备/上传视频的代码:

//create video struct which holds info about the video
video := &yt3.Video{
//TODO: set all required video info
}

//create the insert call
insertCall := service.Videos.Insert("snippet,status", video)

//attach media data to the call
insertCall = insertCall.Media(tmp, googleapi.ChunkSize(1*1024*1024)) //1MB chunk

video, err = insertCall.Do()
if err != nil {
    log.Printf("Error uploading video: %v", err)
    return
    //return errgo.Notef(err, "Failed to upload to youtube")
}

所以我不知道为什么架构检查失败。

1 个答案:

答案 0 :(得分:7)

好的,我明白了。问题不在于对YouTube本身的调用。

图书馆试图在后台刷新令牌,但TokenURL出现了问题。

确保有一个有效的URL修复了问题。

更好的错误信息会有很多帮助,但是...... [/ p>