我目前正在运行一个脚本,使用googleapiclient Phyton包(基于httplib2客户端对象)从Google Analytics中提取数据
- >我的脚本完美无需任何代理.
但我必须把它放在我的公司代理之后,所以我需要调整我的httplib2.Http()对象来嵌入代理信息.
在httplib2 doc 1之后,我试过:
pi = httplib2.proxy_info_from_url('http://user:pwd@someproxy:80')
httplib2.Http(proxy_info=pi).request("http://www.google.com")
Run Code Online (Sandbox Code Playgroud)
但它没有用.我总是得到一个超时错误,有或没有代理信息(因此不考虑参数中的proxy_info)
我还在pysocks包(v1.5.6)中下载了socks 并尝试"wrapmodule"httplib2,如下所述:https: //github.com/jcgregorio/httplib2/issues/205
socks.setdefaultproxy(socks.PROXY_TYPE_HTTP, "proxyna", port=80, username='p.tisserand', password='Telematics12')
socks.wrapmodule(httplib2)
h = httplib2.Http()
h.request("http://google.com")
Run Code Online (Sandbox Code Playgroud)
但我得到一个IndexError :(元组索引超出范围)
与此同时,当我使用请求包时,这个简单的代码完美地运行:
os.environ["HTTP_PROXY"] = "http://user:pwd@someproxy:80"
req = requests.get("http://www.google.com")
Run Code Online (Sandbox Code Playgroud)
问题是需要符合googleapiclient要求并提供htpplib2.Http()客户端对象.
proxy google-api httplib2 google-analytics-api python-requests
我将我的httplib2目录复制到我的GAE项目中,现在我收到以下错误:
line 64, in <module> _ssl_wrap_socket = ssl.wrap_socket
Run Code Online (Sandbox Code Playgroud)
这是Google App Engine的问题,还是我以某种方式错误地安装了我的httplib2?
完全错误转储,作为请求(它很大!):
--> --> -->
Traceback (most recent call last):
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 4053, in _HandleRequest
self._Dispatch(dispatcher, self.rfile, outfile, env_dict)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3977, in _Dispatch
base_env_dict=env_dict)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 588, in Dispatch
base_env_dict=base_env_dict)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3050, in Dispatch
self._module_dict)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2954, in ExecuteCGI
reset_modules = exec_script(handler_path, cgi_path, hook)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2834, in ExecuteOrImportScript …Run Code Online (Sandbox Code Playgroud) 我有这个非常简单的代码来检查网站是上升还是下降.
import httplib2
h = httplib2.Http()
response, content = h.request("http://www.folksdhhkjd.com")
if response.status == 200:
print "Site is Up"
else:
print "Site is down"
Run Code Online (Sandbox Code Playgroud)
当我输入有效的URL时,它会正确打印Site is Up,因为状态是预期的200.但是,当我输入无效的网址时,是否应该打印网站已关闭?相反,它会打印出类似这样的异常
Traceback (most recent call last):
File "C:\Documents and Settings\kripya\Desktop\1.py", line 3, in <module>
response, content = h.request("http://www.folksdhhkjd.com")
File "C:\Python27\lib\site-packages\httplib2\__init__.py", line 1436, in request
(response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
File "C:\Python27\lib\site-packages\httplib2\__init__.py", line 1188, in _request
(response, content) = self._conn_request(conn, request_uri, method, body, headers)
File "C:\Python27\lib\site-packages\httplib2\__init__.py", line 1129, in …Run Code Online (Sandbox Code Playgroud) 我需要针对HTTP服务器执行抢先式基本身份验证,即立即进行身份验证,而无需等待401响应.这可以用httplib2完成吗?
编辑:
我通过在请求中添加Authorization标头解决了这个问题,如接受的答案所示:
headers["Authorization"] = "Basic {0}".format(
base64.b64encode("{0}:{1}".format(username, password)))
Run Code Online (Sandbox Code Playgroud) 我试图找出Python的httplib2 HTTP客户端或API中存在的错误.(首先猜测是API.)在使用httplib2将数据POST到RESTful API时,我得到401响应状态(无授权)并将数据保存到API.
我想检查HTTP请求和对客户端的响应,以及从网络接收和接收的字符串.httplib2代码似乎过于复杂,无法轻松捕获其中的值,并且可能会错过该错误.
查看与客户端的网络通信似乎更快.是否有一些工具可用于监控客户端与本地网络套接字的通信?
我使用的是Python,我向URL发送了一个请求,并使用httplib2收到了回复.我得到的答复是在JSon中,我如何访问特定的参数.我现在所拥有的是:
resp, content = parser.request(access_token_uri, method = 'POST', body = params, headers = headers)
raise Exception(content['access_token'])
Run Code Online (Sandbox Code Playgroud)
我得到了错误
string indices must be integers, not str
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
谢谢
在安装Google Cloud SDK-Python时,会不断发生httplib2.SSLHandshakeError。我已经配置了unfilled_client_secrets.json(如下图所示)。并没有解决HandshakeError。
在下面的这里已经提出了类似的问题,但是没有明确回答。预先感谢您提供的任何帮助。
〜$ ./google-cloud-sdk/install.sh欢迎使用Google Cloud SDK!
追溯(最近一次通话):
文件“ /Users/rptrainor/./google-cloud-sdk/bin/bootstrapping/install.py”,行206,位于main()
文件中,“ / Users / rptrainor /./ google-主要安装(pargs.override_components,pargs.additional_components)
文件“ /Users/rptrainor/./google-cloud-sdk/bin/bootstrapping/install.py ”中的第184行的cloud-sdk / bin / bootstrapping / install.py” ”,在安装_CLI.Execute([''quiet','components','list'])
文件的第130行中,文件“ /Users/rptrainor/google-cloud-sdk/lib/googlecloudsdk/calliope/cli.py”执行self._HandleAllErrors(exc,command_path_string,指定的参数名称)中的第759行
文件的文件“ /Users/rptrainor/google-cloud-sdk/lib/googlecloudsdk/calliope/cli.py”执行资源= args.calliope_command.Run(cli = self,args = args)中的第737行,
文件“ /Users/rptrainor/google-cloud-sdk/lib/googlecloudsdk/calliope/backend.py”,第741行,在运行display_info = self.ai.display_info).Display()
文件” / Users / rptrainor / google-cloud-sdk / lib /googlecloudsdk/calliope/display.py”,第427行,位于Display self._printer.Print(self._resources)
文件“ /Users/rptrainor/google-cloud-sdk/lib/googlecloudsdk/core/resource/resource_printer_base.py”中在“打印资源中资源的资源
”中,第251行,文件“ /Users/rptrainor/google-cloud-sdk/lib/surface/components/list.py”,在运行结果= update_manager.List()中的第86行
文件“ /Users/rptrainor/google-cloud-sdk/lib/googlecloudsdk/core/updater/update_manager.py”,行516,位于列表_,diff = self._GetStateAndDiff(command_path ='components.list')
文件“ / Users / rptrainor / google-cloud-sdk / lib / googlecloudsdk / core / updater / update_manager.py“,第446行,位于_GetStateAndDiff command_path …
python google-app-engine httplib2 python-2.7 google-cloud-sdk
我正在尝试检查存储在数据库中的某些 URL 是否仍然是有效链接。为了实现这一点,我使用 httplib2 来请求 HEAD 状态,以避免下载页面的全部内容。我对结果非常满意。
但后来我发现在某些情况下,使用 HEAD 请求返回的状态代码与使用 GET 请求返回的状态代码并不相似。
因此,为了防止库中出现错误,我使用不同的库进行了一些测试(下面是我的“请求”库测试):
> import requests
> rg = requests.get("https://fr.news.yahoo.com/chemin-dames-l-hommage-personnel-pr%C3%A9sident-121005844.html")
> rh = requests.head("https://fr.news.yahoo.com/chemin-dames-l-hommage-personnel-pr%C3%A9sident-121005844.html")
> print("GET status code:", rg.status_code)
('GET status code:', 200)
> print("HEAD status code:", rh.status_code)
('HEAD status code:', 404)
Run Code Online (Sandbox Code Playgroud)
但无论我使用什么库,对于同一个 URL,我仍然有不同的 GET & HEAD 状态。
因此,显然站点维护者决定不为 HEAD 和 GET 请求返回相同的状态代码......即使不推荐,这似乎也是合法的。
有没有一种方法可以避免此问题,并且仍然知道链接是否有效,而无需下载我需要验证的近 200 万个网址的全部内容?
每当 HEAD 请求返回 >400 状态代码时,我都可以仔细检查 GET 请求,但这对我来说似乎是一项肮脏的工作。
我正在尝试使用 python requests库从服务器上的远程主机流式传输数据,但由于请求字节不足而导致 ImcompleteRead 出现 ChunkedEncodingError,我发出了 4096 字节块的请求,但服务器在任何步骤都向我发送了部分内容。我在堆栈溢出上遇到了类似的问题,但他们都建议使用 http1.0 而不是 1.1,我也尝试过 urllib 但到目前为止没有成功。
我已经在上下文中完成了代码部分,以确保连接将正常关闭,但我随时都会遇到异常r = req.iter_content(chunk_size=4096)。已尝试在异常中重新尝试,但异常是相同的。
IncompleteRead 问题的解决方案是什么?
更新:采用小块大小(256 或 512)对于大文件或数据没有太大帮助,但小文件可以正常下载。这是片段:
with requests.get("https://example.com/data", headers={ 'Content-Type': 'application/octet-stream'}, stream=True) as r:
with open("test10.dat", 'wb') as f:
for chunk in r.iter_content(chunk_size=256):
if chunk:
print("Chunk size to be write for another file", len(chunk))
f.write(chunk)
Run Code Online (Sandbox Code Playgroud) ImportError: No module named httplib2导入时出错httplib2.我有最新版本的App Engine启动程序(1.8.0.802),我可以看到包含/GoogleappEngineLauncher.app/..../lib/httplib2/httplib2
Eclipse 下所有文件的lib文件夹能够找到它并导入没有问题,但是当我运行我的应用程序时,我收到错误.
ERROR 2013-06-09 06:15:28,554 wsgi.py:219]
Traceback (most recent call last):
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/runtime/wsgi.py", line 196, in Handle
handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/runtime/wsgi.py", line 255, in _LoadHandler
handler = __import__(path[0])
File "/Users/user1791567/Documents/git/workspace/MyApp/test.py", line 7, in <module>
import httplib2
ImportError: No module named httplib2
Run Code Online (Sandbox Code Playgroud)
do:from apiclient import discovery在文件夹中也是如此google-api-python-client
不知道我做错了什么
感谢帮助!!
httplib2 ×10
python ×7
http ×2
python-2.7 ×2
google-api ×1
json ×1
proxy ×1
python-3.x ×1
url ×1