특정 API에 액세스하는 것과 관련하여 재현 할 수있는 예제를 제공하는 것은 불가능합니다. 사전에 사과하십시오. 나는 R. documentation을 통해 에딘버러 프린지 축제 API에 액세스하려고 말한다 다음API 액세스, 문자 인코딩과 관련된 가능성있는 해싱 쿼리
지금까지 시도 무엇Authentication
An access key is required for all requests to the API and can be obtained by registration. This key, combined with the signature explained below, is required to get any access to the API. If you do not provide an access key, or provide an invalid key or signature, the server will return an
HTTP 403
error.Your secret token is used to calculate the correct signature for each API request and must never be disclosed. Once issued, it is never transmitted back or forward. The API server holds a copy of your secret token, which it uses to check that you have signed each request correctly.
You calculate the signature using the HMAC-SHA1 algorithm:
Build the full API request URL, including your access key but excluding the server domain - eg
/events?festival=book&key=12345
. See the note below on URL encoding.Calculate the hmac hash of the url using the sha1 algorithm and your secret token as the key.
Append the hex-encoded hash to your url as the signature parameter
URL encoding in queries
You should calculate the signature after URL-encoding any parameters - for example, to search for the title "Mrs Brown" you would first build the URL
/events?title=Mrs%20Brown&key=12345
and then sign this string and append the signature.Signature encoding
Some languages - notably C# - default to encoding hashes in UTF-16. Ensure your signature is encoded in plain ASCII hex or it will not be valid.
은 다음과 같습니다 :
library(digest)
library(jsonlite)
source("authentication.R") # credentials stored here
는 쿼리 문자열을 만들
query <- paste0('/events?festival=demofringe&size=20&from=1&key=', API_KEY)
해시 된 쿼리 만들기
sig <- hmac(SECRET_SIGNING_KEY, query, algo="sha1")
0
url <- paste0('https://api.edinburghfestivalcity.com', query, '&signature=', sig)
이 API
results <- fromJSON(url)
에 제출 한 최종 URL을 생성하고 난 오류 얻을 :
Error in open.connection(con, "rb") : HTTP error 417.
내가 서명이 ASCII로 인코딩되어 있는지 아니에요을 문서별로. 누구든지이 상황을 디버깅하는 방법을 알고 있습니까? 시도하고 인코딩을 변환하려면 iconv()
시도하고 문자 개체에 Encoding()
호출하면 "unknown"
반환합니다. 또한 ASCII로 설정된 "인코딩으로 저장"을 사용하여 RStudio에서 두 파일을 모두 저장하려고 시도했으며 encoding = "ASCII"
으로 인증을 시도했습니다. 내가 브라우저에 최종 URL을 붙여 넣을 때
가 덧붙여, 나는 다음과 같은 오류 얻을 : 결국
Invalid Accept header value. ['application/json', 'application/json;ver=2.0'] are supported
& = 1과 (으) 간의 &를 (를) 잊어 버렸습니까? 그게 실수라고 생각해 주셔서 감사합니다. 'query <- paste0 ('/ events? festival = demofringe & size = 20 & from = 1 & key = ', API_KEY)' –
나는 이것을 고쳤고 이제'open.connection (con, "rb") 오류 : HTTP error 417.'을 얻습니다. 이 변경 사항을 반영하기 위해 질문을 수정하겠습니다. – roman
반갑습니다. 우리 모두는 이러한 오타를 만들었습니다. –