亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

http.get() 返回“422 無法處理的實體”

http.get() 返回“422 無法處理的實體”

Go
搖曳的薔薇 2023-05-15 10:15:02
我編寫了一個 go 程序來查詢 github 存儲庫“golang:go”中的問題。http.Get() 以狀態“200 OK”響應。然后我查詢最近 3 個月內創建的問題,http.Get() 返回“422 Unprocessable Entity”。下面是程序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)        q=url.QueryEscape("repo:golang/go" + timeStr)        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) }   我用它來形成查詢。我是網絡編程的新手,無法理解我在形成第二個查詢時出錯的地方。
查看完整描述

3 回答

?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

對我有用的兩件事

1)反轉你的timeStr中的“from”和“to”

2)不要在timeStr上使用QueryEscape,只需像這樣添加它

???urlStr?=?"https://api.github.com/search/issues"?+?"?q=repo:golang/go+"?+?timeStr

不要使用符號(我最初用這個回答)使用加號或空格。

查看完整回答
反對 回復 2023-05-15
?
呼喚遠方

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


查看完整回答
反對 回復 2023-05-15
?
慕少森

TA貢獻2019條經驗 獲得超9個贊

當客戶端發送無效輸入時,包括來自github 的API 在內的許多 API都會返回狀態代碼。422在您的代碼中,錯誤的輸入是由連接兩個沒有“分隔符”的限定符的行生成的。

因此,這"repo:golang/go" + timeStr將導致q包含單個“合并”限定符的值看起來像這樣:

"repo:golang/gocreated:2018-1...

要修復您的代碼,您只需在兩個限定符之間添加一個空格,您的查詢就可以正常工作。

q=url.QueryEscape("repo:golang/go?"?+?timeStr)


查看完整回答
反對 回復 2023-05-15
  • 3 回答
  • 0 關注
  • 195 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號