2015-11-25 62 views
1

我有一個Python腳本用於連接到Parse.com(遠程服務器)並上傳文件。該腳本運行位於企業防火牆後面的服務器。請求庫中的代理設置Python

import env 
import json 
import requests 
from requests.auth import HTTPProxyAuth 

def uploadFile(fileFullPath): 
    print "Attempting to upload file: " + fileFullPath 

    proxies = { 
     "http": "http://10.128.198.14", 
     "https": "http://10.128.198.14" 
    } 

    auth = HTTPProxyAuth('MyDomain\MyUsername', 'MyPassord') 

    headers = { 
     "X-Parse-Application-Id": env.X_Parse_APP_ID, 
     "X-Parse-REST-API-Key": env.X_Parse_REST_API_Key, 
     "Content-Type": "application/pdf" 
    } 

    f = open(fileFullPath, 'r') 
    files = {'file': f} 
    r = requests.post(env.PARSE_HOSTNAME + env.PARSE_FILES_ENDPOINT + "/" + env.PARSE_FILE_NAME, files=files, headers=headers, timeout=10, verify=False, proxies=proxies) 
    print r.text 

當我用這個模塊在命令提示符下,我得到了以下信息:

ConnectionError thrown. Details: Cannot connect to proxy. Socket error: Tunnel connection failed: 407 Proxy Authentication Required. 

我敢肯定的用戶名和密碼都是正確的。

任何解決方案?謝謝!

+0

您沒有爲'requests.post()'方法提供'auth'參數 – JRodDynamite

+0

我向requests.post()添加了「auth」,但由於同樣的錯誤,它仍然失敗... – alextc

回答

1

407錯誤的原因是代理本身需要進行身份驗證。因此,對於你proxies字典,請執行以下操作:在proxies網址userpass變量

proxies = { 
    "http": "http://user:[email protected]", 
    "https": "http://user:[email protected]" 
} 

填充。 Here是關於如何構建代理對象並對其進行身份驗證的相關請求文檔的鏈接。

+0

我做了試試這個,但仍然是同樣的錯誤。奇怪的是,IE選項 - >局域網具有相同的代理設置,IE運行良好。 – alextc

+0

這很奇怪。當我從IE選項 - >局域網中設置代理服務器時,它拋出了這個407錯誤。當我勾選代理服務器並啓用「自動檢測設置」時,它有時可以工作! – alextc