2015-12-21 109 views
5

我正在使用python requests模塊來調用API。 一切工作正常,直到我推我的代碼到AWS。即使在AWS上,如果我在開發服務器上工作,即ec2.####.amazon.com:8000,它也可以工作。Python請求POST不起作用

這裏是我的代碼:

r = requests.post(api_url, data = {"var 1":"value", "var 2":"value"}) 

我的API不允許網址GET方法,以便響應我得到這意味着requests.post被讀爲get

任何想法有什麼錯錯誤不允許GET方法這裏。

+0

你試過訪問你的其餘部分沒有8000端口的項目(django的生產env模式),你也可以嘗試評論你的request.method檢查,看看你的API的請求是否工作或根本不工作。乾杯! –

+0

@JatinBansal是的,它沒有8000的工作,只有發佈錯誤得到工作正常 – user5594493

+0

你可以嘗試任何REST客戶端來測試你的POST請求,它們有一些可用,如谷歌瀏覽器的高級休息客戶端。另外,請發佈一些錯誤發生時獲得的django調試信息(將debug設置爲True)。您的本地主機上的 –

回答

3

其實這個問題是由於SSL,如果你的服務器使用https方法,那麼你需要添加以下行requests.post

r = requests.post(api_url, data = {"var 1":"value", "var 2":"value"}, verify=True) 

另外,還要確保您的api_url包括httpshttp

我有寫了一個小功能

def get_base_url(request): 
    host = get_host(request) 
    if request.is_secure(): 
     return '{0}{1}/{2}'.format('https://', host, 'url') 
    else: 
     return '{0}{1}/{2}'.format('http://', host, 'url')