python發送HTTP POST請求



1. 127.0.0.1和0.0.0.0


127.0.0.1是一個回送地址,指本地機,一般用來本機測試使用,使用127.0.0.1啟的服務只能在本地機器上訪問,使用0.0.0.0啟的服務可以在其他機器上通過網絡訪問。


2. VMware 虛擬機向主機做端口映射


虛擬機的網絡連接默認是 NAT模式(用於共享主機的IP地址),要在NAT模式下由虛擬機提供網絡服務,需要做端口映射。

VMware虛擬機->編輯->虛擬網絡編輯器:



主機和虛擬機端口可以設置為一樣。設置完成之后就可以通過主機ip:端口號訪問虛擬機了。


3. POST請求訪問url報錯Forbidden (CSRF cookie not set.)解決辦法


錯誤細節,在訪問端報錯:

raise HTTPError(req.get_full_url(),code,msg,hdrs.fp)
urllib2.HTTPError: HTTP Error 403: Forbidden
在服務端報錯:
Forbidden (CSRF cookie not set.):
解決辦法:

修改settings.py設置文件,刪除掉這一行代碼:

'django.middleware.csrf.CsrfViewMiddleware',

4. python發送HTTP POST請求(json格式)到指定網址

#!/usr/bin/env python
#  -*- coding:utf-8 -*-

import urllib2
import json

def http_post(url,data_json):
    jdata = json.dumps(data_json)
    req = urllib2.Request(url, jdata)
    response = urllib2.urlopen(req)
    return response.read()

url = 'http://192.168.0.107:8000/medi_test'
data_json = {'name': 'cuiyongyuan','job':'hero'}
resp = http_post(url,data_json)
print(resp)

5. Django后端處理json格式的POST請求

def handle_post(request):
    if request.POST:
        req = json.loads(request.body)
        name = req.get('name')
        job = req.get('job')
        print(name,job)
        return_json = json.dumps((name,job))      
        return HttpResponse(return_json)
    else:
        return_json = 'POST only!'
        return HttpResponse(return_json)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM