3 回答
TA贡献1863条经验 获得超2个赞
对我有用的两件事
1)反转你的timeStr中的“from”和“to”
2)不要在timeStr上使用QueryEscape,只需像这样添加它
urlStr = "https://api.github.com/search/issues" + "?q=repo:golang/go+" + timeStr
不要使用符号(我最初用这个回答)使用加号或空格。
TA贡献1856条经验 获得超11个赞
我像下面这样使用,如果我不转义第二个网址,它对我有用:
package main
import(
"fmt"
"time"
"net/http"
"net/url"
)
func main() {
var ret error
var str string
q:=url.QueryEscape("repo:golang/go")
fmt.Println("q:", q)
urlStr := "https://api.github.com/search/issues" +"?q=" + q
fmt.Println("urlStr:", urlStr)
resp, ret:= http.Get(urlStr)
fmt.Println("ret :", ret, "resp.status :", resp.Status)
timeStr := "created:"
to := time.Now()
from := to.AddDate(0, -3, 0)
str = to.Format("2006-01-02")
timeStr = timeStr + str + ".."
fmt.Printf("time1 : %s\n", timeStr)
str = from.Format("2006-01-02")
timeStr = timeStr + str
fmt.Printf("time2 : %s\n", timeStr)
urlStr = "https://api.github.com/search/issues" +"?q=" + "repo:golang/go&created:2018-11-29..2018-08-29"
fmt.Println("urlStr:", urlStr)
resp, ret = http.Get(urlStr)
fmt.Println("ret :", ret, "resp.status :", resp.Status)
}
输出是:
q: repo%3Agolang%2Fgo
urlStr: https://api.github.com/search/issues?q=repo%3Agolang%2Fgo
ret : <nil> resp.status : 200 OK
time1 : created:2018-11-29..
time2 : created:2018-11-29..2018-08-29
urlStr: https://api.github.com/search/issues?q=repo:golang/go&created:2018-11-29..2018-08-29
ret : <nil> resp.status : 200 OK
TA贡献2019条经验 获得超9个赞
当客户端发送无效输入时,包括来自github 的API 在内的许多 API都会返回状态代码。422
在您的代码中,错误的输入是由连接两个没有“分隔符”的限定符的行生成的。
因此,这"repo:golang/go" + timeStr
将导致q
包含单个“合并”限定符的值看起来像这样:
"repo:golang/gocreated:2018-1...
要修复您的代码,您只需在两个限定符之间添加一个空格,您的查询就可以正常工作。
q=url.QueryEscape("repo:golang/go " + timeStr)
- 3 回答
- 0 关注
- 152 浏览
添加回答
举报