3 回答

TA貢獻(xiàn)1863條經(jīng)驗(yàn) 獲得超2個(gè)贊
對(duì)我有用的兩件事
1)反轉(zhuǎn)你的timeStr中的“from”和“to”
2)不要在timeStr上使用QueryEscape,只需像這樣添加它
???urlStr?=?"https://api.github.com/search/issues"?+?"?q=repo:golang/go+"?+?timeStr
不要使用符號(hào)(我最初用這個(gè)回答)使用加號(hào)或空格。

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超11個(gè)贊
我像下面這樣使用,如果我不轉(zhuǎn)義第二個(gè)網(wǎng)址,它對(duì)我有用:
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貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個(gè)贊
當(dāng)客戶(hù)端發(fā)送無(wú)效輸入時(shí),包括來(lái)自github 的API 在內(nèi)的許多 API都會(huì)返回狀態(tài)代碼。422
在您的代碼中,錯(cuò)誤的輸入是由連接兩個(gè)沒(méi)有“分隔符”的限定符的行生成的。
因此,這"repo:golang/go" + timeStr
將導(dǎo)致q
包含單個(gè)“合并”限定符的值看起來(lái)像這樣:
"repo:golang/gocreated:2018-1...
要修復(fù)您的代碼,您只需在兩個(gè)限定符之間添加一個(gè)空格,您的查詢(xún)就可以正常工作。
q=url.QueryEscape("repo:golang/go?"?+?timeStr)
- 3 回答
- 0 關(guān)注
- 192 瀏覽
添加回答
舉報(bào)