【问题标题】:golang http.Post request returns with response 404golang http.Post 请求返回响应 404
【发布时间】:2018-12-01 10:52:56
【问题描述】:

我已经编写了一个 go 代码来在我的 github 存储库中的项目中创建问题。我正在使用此处提到的参数 [https://developer.github.com/v3/issues/#create-an-issue][1]

但我收到状态为 404 的响应。下面是我的代码。

package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    param := map[string]string{"title": "issue1", "body": "aassddrff", "assignee": "vigneshkm"}

    query, _ := json.Marshal(param)
    queryUrl := "https://api.github.com/repos/vigneshkm/first_repo/issues"

    fmt.Println("query:", string(query))
    resp, err := http.Post(queryUrl, "application/json", bytes.NewBuffer(query))

    fmt.Println("query_status : ", resp.StatusCode, "err : ", err)
    resp.Body.Close()
}

我是网络编程的初学者,我无法理解我在这段代码中的错误。请帮助我:)

【问题讨论】:

  • 响应正文是什么?
  • 一些 API 响应按照他们自己的约定,也可以在这里。如果我是你,会检查 cookie 并可能重定向到该 url
  • 你的 API 说 Not found 问题,即使我用邮递员检查过,首先检查你的 API,它是否真的存在?
  • @Peter 我试图读取正文如下 "newBuf := bytes.NewBuffer(buf) ; num, ret := newBuf.ReadFrom(json.NewDecoder(resp.Body).Buffered()) ; fmt.Println("string:", newBuf.String())" 我看到输出为零。你的意思是一样的还是别的什么??
  • 您会收到 HTTP 404,因为这是一个需要身份验证的 POST 请求。见:developer.github.com/v3/#authentication

标签: http go http-post github-api


【解决方案1】:

1) 访问https://github.com/settings/tokens
2) 点击“生成新令牌”
3) 复制令牌。
4)将令牌粘贴到下面的“YOUR_ACCESS_TOKEN_HERE”。 (我的意思是,删除“YOUR_ACCESS_TOKEN_HERE”并将您的令牌粘贴到那里)。

$ cat main.go 
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    param := map[string]string{"title": "issue1", "body": "aassddrff", "assignee": "vigneshkm"}

    query, _ := json.Marshal(param)
    queryUrl := "https://api.github.com/repos/vigneshkm/first_repo/issues?access_token=YOUR_ACCESS_TOKEN_HERE"

    fmt.Println("query:", string(query))
    resp, err := http.Post(queryUrl, "application/json", bytes.NewBuffer(query))

    fmt.Println("query_status : ", resp.StatusCode, "err : ", err)
    resp.Body.Close()
}

这是我的环境中的结果。

$ go run main.go 
query: {"assignee":"vigneshkm","body":"aassddrff","title":"issue1"}
query_status :  201 err :  <nil>

https://github.com/vigneshkm/first_repo/issues/2

【讨论】:

  • 此解决方案有效。我现在正尝试通过程序或代码创建访问令牌。
【解决方案2】:

您在请求时缺少访问令牌。

queryUrl := "https://api.github.com/repos/vigneshkm/first_repo/issues?access_token=" + OAUTH_TOKEN

查看document

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-03
    • 1970-01-01
    • 2022-01-25
    • 2019-03-04
    • 2020-12-18
    • 2018-07-01
    • 1970-01-01
    • 2021-10-01
    相关资源
    最近更新 更多