gpt4 book ai didi

github - 使用 OAuth 的 api.github.com 的 Groovy HTTPBuilder

转载 作者:行者123 更新时间:2023-12-04 08:16:00 24 4
gpt4 key购买 nike

美好的一天!
我在 github 上生成了一个特殊的个人访问 token 。我想将一些代码搜索到私有(private)存储库中。当我使用 curl 时一切正常:

curl  -H 'Authorization: token <MY_PERSONAL_TOKEN>' -H 'Accept: application/vnd.github.v3.text-match+json' https://api.github.com/search/code?q=FieldDescriptionResponseChecker+@MY_PRIVATE_REPO&sort=stars&order=desc;

但是当我尝试使用 groovy HTTPBuilder 时

class GithubSearchService {

private String authToken


public GithubSearchService(String authToken) {
this.authToken = authToken
}


public void search(String query) {
def http = new HTTPBuilder('https://api.github.com')

http.request( GET, TEXT) { req ->
uri.path = '/search/code'
uri.query = [ q: query]
headers.'Authorization' = "token $authToken"
headers.'Accept' = 'application/vnd.github.v3.text-match+json'

response.success = { resp, reader ->
println "Got response: ${resp.statusLine}"
println "Content-Type: ${resp.headers.'Content-Type'}"
println reader.text
}
}
}
}

我有 403 异常

Exception in thread "main" groovyx.net.http.HttpResponseException: Forbidden
at groovyx.net.http.HTTPBuilder.defaultFailureHandler(HTTPBuilder.java:642)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
......

请问你能帮忙让 groovy 工作吗?

最佳答案

您没有添加所需的 header :User-Agent,请参阅 docs (仅供引用 curl 自动添加此 header - 使用 -v 开关运行它)。还记得在使用 HTTPBuilder 时始终添加 failure 处理程序 - 所有必要的信息都已传递到那里。

代码如下:

@Grab('org.codehaus.groovy.modules.http-builder:http-builder:0.7.1')

import groovyx.net.http.HTTPBuilder
import static groovyx.net.http.ContentType.*
import static groovyx.net.http.Method.*

class GithubSearchService {

private String authToken

public GithubSearchService(String authToken) {
this.authToken = authToken
}

public void search(String query) {
def http = new HTTPBuilder('https://api.github.com')

http.request(GET, JSON) { req ->
uri.path = '/search/code'
uri.query = [ q: 'FieldDescriptionResponseChecker+@<REPOSITORY>']
headers.'Authorization' = "token $authToken"
headers.'Accept' = 'application/vnd.github.v3.text-match+json'
headers.'User-Agent' = 'Mozilla/5.0'
response.success = { resp, json ->
println "Got response: ${resp.statusLine}"
println "Content-Type: ${resp.headers.'Content-Type'}"
println json
}
response.failure = { resp, json ->
print json
}
}
}
}

new GithubSearchService('<TOKEN>').search()

关于github - 使用 OAuth 的 api.github.com 的 Groovy HTTPBuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26781511/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com