실제로이 웹 사이트 인 "android-review.googlesource.com"에서 "httplib.HTTPSConnection"에 연결하려고합니다.이 도구는 실제로 Gerrit입니다. 코드 검토)에서 Gerrit API는 JSON 형식의 검토 데이터에 대한 인터페이스를 제공합니다. JSON 데이터를 수집해야합니다. Gerrit에 대한 자세한 내용은 여기를 참조하십시오. https://gerritreview.googlesource.com/Documentation/rest-api.htmlTypeError : <내장 함수 ID>가 JSON을 직렬화 할 수 없습니다.
소스 코드에 대해 조금 설명하겠습니다. 캐시 사용을 위해 파일에 데이터를 저장하는 "GetRequestOrCached"기능과 웹 사이트에 대한 연결을 생성하고 응답을 반환하는 "MakeRequest"기능이 있습니다. 하지만 오류는 json.dumps가 요청 (req)에 사용되는 부분과 관련이 있습니다. 요청은 사전입니다.
import socket, sys
import httplib
import pyodbc
import json
import types
import datetime
import urllib2
import os
import logging
import re, time
def GetRequestOrCached(url, method, data, filename):
path = os.path.join("json", filename)
if not os.path.exists(path):
data = MakeRequest(url, method, data)
time.sleep(1)
data = data.replace(")]}'", "")
f = open(path, "w")
f.write(data)
f.close()
return open(path).read()
def MakeRequest(url, method, data, port=443):
successful = False
while not successful:
try:
conn = httplib.HTTPSConnection("android-review.googlesource.com", port)
headers = {"Accept": "application/json,application/jsonrequest",
"Content-Type": "application/json; charset=UTF-8",
"Content-Length": len(data)}
conn.request(method, url, data, headers)
conn.set_debuglevel(1)
successful = True
except socket.error as err:
# this means a socket timeout
if err.errno != 10060:
raise(err)
else:
print err.errno, str(err)
print "sleep for 1 minute before retrying"
time.sleep(60)
resp = conn.getresponse()
if resp.status != 200:
raise GerritDataException("Got status code %d for request to %s" % (resp.status, url))
return resp.read()
#-------------------------------------------------
filename = "%d-ChangeDetails.json"
url = "/gerrit_ui/rpc/ChangeDetailService"
req = {"jsonrpc" : "2.0",
"method": "changeDetail",
"params": [{"id": id}],
"id": 44
}
data = GetRequestOrCached(url, "POST", json.dumps(req), filename)
print json.loads(data)
이 광고 오류 "데이터 = GetRequestOrCached (URL"POST "json.dumps 발생 (REQ)
TypeError: <built-in function id> is not JSON serializable
이것은 코드 :
이
오류이며 , 파일 이름)". 오류를 수정 한 사람도 웹 사이트의 응답이 오류인지 또는 올바른 응답인지 확인합니다.
죄송합니다 그 가치? –