标签: httplib2

Google API +代理+ httplib2

我目前正在运行一个脚本,使用 Phyton包(基于客户端对象)从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)

我还在包(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

6
推荐指数
1
解决办法
2207
查看次数

如何在Google App Engine上正确安装httplib2?

我将我的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)

python google-app-engine httplib2

5
推荐指数
1
解决办法
2692
查看次数

Python httplib2处理异常

我有这个非常简单的代码来检查网站是上升还是下降.

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)

python httplib2

5
推荐指数
1
解决办法
9173
查看次数

我可以使用httplib2进行抢先认证吗?

我需要针对HTTP服务器执行抢先式基本身份验证,即立即进行身份验证,而无需等待401响应.这可以用httplib2完成吗?

编辑:

我通过在请求中添加Authorization标头解决了这个问题,如接受的答案所示:

 headers["Authorization"] = "Basic {0}".format(
        base64.b64encode("{0}:{1}".format(username, password)))
Run Code Online (Sandbox Code Playgroud)

python http-authentication httplib2

5
推荐指数
1
解决办法
3479
查看次数

如何检查Python HTTP客户端的网络通信?

我试图找出Python的httplib2 HTTP客户端或API中存在的错误.(首先猜测是API.)在使用httplib2将数据POST到RESTful API时,我得到401响应状态(无授权)并将数据保存到API.

我想检查HTTP请求和对客户端的响应,以及从网络接收和接收的字符串.httplib2代码似乎过于复杂,无法轻松捕获其中的值,并且可能会错过该错误.

查看与客户端的网络通信似乎更快.是否有一些工具可用于监控客户端与本地网络套接字的通信?

python network-programming http httplib2

5
推荐指数
1
解决办法
1548
查看次数

python,Json和字符串索引必须是整数,而不是str

我使用的是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)

我该怎么做?

谢谢

python url json httplib2

5
推荐指数
1
解决办法
9222
查看次数

安装Google Cloud SDK时出现httplib2.SSLHandshakeError

在安装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

5
推荐指数
1
解决办法
2193
查看次数

HEAD 和 GET http 请求对同一 URL 返回不同的状态代码

我正在尝试检查存储在数据库中的某些 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 http-status-codes httplib2 python-requests

5
推荐指数
1
解决办法
2913
查看次数

从服务器上的远程 url 传输数据时如何处理 IncompleteRead 的 ChunkedEncodingError

我正在尝试使用 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)

http httplib2 python-3.x python-requests

5
推荐指数
0
解决办法
397
查看次数

ImportError:没有名为httplib2 App engine 1.8.0的模块

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

不知道我做错了什么

感谢帮助!!

google-app-engine httplib2 python-2.7

4
推荐指数
1
解决办法
3407
查看次数