저는이 문제를 과거에 경험해 왔으며 지금까지 해결할 수있었습니다. 앱 엔진에서 Twitch API를 호출 할 때 Error 400이 발생합니다. Google 그룹스 twitch 페이지뿐만 아니라 twitch tv 자신의 포럼에 가봤습니다.GAE에서 Twitch TV API 호출로 오류 400 발생
트위치 TV와 App Engine에서 수 많은 사람들과 이야기 할 수 있었기 때문에이 문제를 해결할 수있었습니다. 내 질문을 명확히하기 위해 Twitch TV API에 대한 URL 호출을 시도 할 때 일어나는 일을 직접 복제 할 수있는 간단한 응용 프로그램을 만들 수있었습니다.
요약 :
이 내 응용 프로그램을 배포 할 때 실패 간단한 코드이지만, 로컬 호스트 환경에서 완벽하게 작동 : 여기
import webapp2
import urllib2
class MainHandler(webapp2.RequestHandler):
def get(self):
url = ('https://api.twitch.tv/kraken/streams/nl_kripp')
contents = urllib2.urlopen(url)
self.response.out.write(contents.read())
app = webapp2.WSGIApplication([('/', MainHandler)],
debug=True)
이되는 때 정확한 응용 프로그램이 생성하는 것입니다 localhost에서 실행하십시오 (가정으로도) :
{ "stream": { "name": "live_user_nl_kripp", "game": "Guild Wars 2", "viewers": 3229, ""{ "self :"https://api.twitch.tv/kraken/streams/nl_kripp "},"_id ": 3681678672,"broadcaster ":"fme ","channel ": {"game " "길드 워 2", "이름": "nl_kripp", "created_at": "2012-04-15T02 : 25 : 31Z", "teams": [{ "name": "nolife", "created_at": "2012 -06-20T23 : 48 : 51Z ","배경 ": null,"updated_at ":"2012-06-20T23 : 49 : 08Z ","배너 ": null,"_ 링크 ": {"self ":"https : //api.twitch.tv/kraken/teams/nolife"},"_id":330,"logo":null,"inn" ,"display_name":"noLife"}],"banner " : null, "updated_at": "2012-08-26T21 : 12 : 55Z", "배경": "http://static-cdn.jtvnw.net/jtv_user_pictures/nl_kripp-channel_background_image-527e8b792a46df22.png", "url" : "http://www.twitch.tv/nl_kripp", "logo": "http://static-cdn.jtvnw.net/jtv_user_pictures/nl_kripp-profile_image-267fd5e2fb95a15d-300x300.png", "_id": 29795919 , "_links": { "stream_key": "https://api.twitch.tv/kraken/channels/nl_kripp/stream_key", "self": "https://api.twitch.tv/kraken/channels/nl_kripp ","chat ":"https://api.twitch.tv/kraken/chat/nl_kripp ","commercial ":"https://api.twitch.tv/kraken /channels/nl_kripp/commercial","features":"https://api.twitch.tv/kraken/channels/nl_kripp/features"},"mature":null,"video_banner":"http://static- cdn.jtvnw.net/jtv_user_pictures/nl_kripp-channel_offline_image-f3ad1124bc19cffd-640x360.png","display_name":"nl_Kripp",status":"nolife Kripparrian - GW2 레인저 Lvling. Server = Maguuma "},"preview ":"http://static-cdn.jtvnw.net/previews/live_user_nl_kripp-630x473.jpg ","partner ": true},"_links ": {"self ":"https : //api.twitch.tv/kraken/streams/nl_kripp "}}
이제 앱 엔진 환경에서 똑같은 응용 프로그램 :
http://urltestingsite.appspot.com/
나는 꽤을 보냈습니다 이 문제는 내 웹 사이트의 주요 체인 링크이므로이 문제를 해결하려고 노력합니다. 왜 이런 일이 발생했는지 원격으로 알 수 있습니까?
EDIT - 이것은 t입니다 내 실제 응용 프로그램에서 그는 코드 :
def check_if_live(self, b):
url = ('https://api.twitch.tv/kraken/streams/%s' %b)
url2 = urlfetch.fetch(url, headers = {'User-Agent': "suitegamer_User-Agent"})
contents = urllib2.urlopen(url2)
if (contents.read()).find('{"stream":null,') == 0:
return 'Offline'
else:
return 'Live'
이 코드는이 AttributeError를 반환 : 당신은 속도 제한 또는 앱이 거부되는 액세스를 쳤을 때
AttributeError: '_URLFetchResult' object has no attribute 'get_type'
AFAIK,'User-agent'는 완전히 편집 할 수 없습니다. 맞춤 UA를 설정할 수 있지만 GAE는 항상 AppEngine-Google을 다음과 같이 추가합니다. http://code.google.com/p/googleappengine/issues/detail?id=342 –
+1 나는 ' 그걸 알아. 다행스럽게도이 경우 유감스럽게도 유일한 UA는 콜론 뒤에 텍스트가있는 것입니다. –
고마워! 몇 분 후에 이걸 줄께. – suitegamer