python 用POST請求php,$_POST接收不到訊息
首先來到php文件。已經說的很清楚了。
當 HTTP POST 請求的 Content-Type 是 application/x-www-form-urlencoded 或 multipart/form-data 時,會將變數以關聯陣列形式傳入當前指令碼。
所以python,請求的時候header中content-type需要是這2種。
index.php
<?php
$input = file_get_contents('php://input');
var_dump($input);//form-data 不走這裡
var_dump($_POST);
form_data.py
from requests_toolbelt import MultipartEncoder import requests m = MultipartEncoder(fields={'field0': 'value', 'field1': '中文'}) print(m.to_string()) print(m.content_type) m = MultipartEncoder(fields={'field0': 'value', 'field1': '中文'}) r = requests.post('http://127.0.0.1/index.php', data=m, headers={'Content-Type': m.content_type}) print(r.content) #返回值 b'--ea08f072980f44e4b9b1bf1c92831c9d\r\nContent-Disposition: form-data; name="field0"\r\n\r\nvalue\r\n--ea08f072980f44e4b9b1bf1c92831c9d\r\nContent-Disposition: form-data; name="field1"\r\n\r\n\xe4\xb8\xad\xe6\x96\x87\r\n--ea08f072980f44e4b9b1bf1c92831c9d--\r\n' multipart/form-data; boundary=ea08f072980f44e4b9b1bf1c92831c9d b'string(0) ""\narray(2) {\n ["field0"]=>\n string(5) "value"\n ["field1"]=>\n string(6) "\xe4\xb8\xad\xe6\x96\x87"\n}\n'
form_urlencoded.py
from socket import * import urllib3 import urllib import json import struct import time import threading import sys import time http = urllib3.PoolManager() url = 'http://127.0.0.1/index.php' info = {'field0': 'value', 'field1': '中文'} print(json.dumps(info)) r = http.request('POST', url, body=json.dumps(info), headers={"Content-Type": "application/x-www-form-urlencoded"}) print(r.status) print(r.data) #返回值 {"field0": "value", "field1": "\u4e2d\u6587"} 200 b'string(45) "{"field0": "value", "field1": "\\u4e2d\\u6587"}"\narray(1) {\n ["{"field0":_"value",_"field1":_"\\u4e2d\\u6587"}"]=>\n string(0) ""\n}\n'
請求資料
通過兩組例子,你可以直觀的看出來請求方式的區別,這裡專門把form-data中的請求資料發出來,因為form-urlencoded就是一個json
--ea08f072980f44e4b9b1bf1c92831c9d Content-Disposition: form-data; name="field0" value --ea08f072980f44e4b9b1bf1c92831c9d Content-Disposition: form-data; name="field1" \xe4\xb8\xad\xe6\x96\x87 --ea08f072980f44e4b9b1bf1c92831c9d--
form-data被一串編碼分割,這個分隔叫做boundary,我們在後面列印的m.content_type中可以看出,
multipart/form-data; boundary=ea08f072980f44e4b9b1bf1c92831c9d
Content-Type裡多了boundary就是上面的分隔符。
還有一點不一樣就是對中文的編碼方式。
對於輸出結果
我們發現form-data 沒有走php://input
enctype="multipart/form-data" 的時候 php://input 是無效的。
如果把content-type換成text/html或者application/json我們在$_POST中返回就為空了,但是資料可以再php://input中獲取到。
相關推薦
python 用POST請求php,$_POST接收不到訊息
首先來到php文件。已經說的很清楚了。 當 HTTP POST 請求的 Content-Type 是 application/x-www-form-urlencoded 或 multipart/form-data 時,會將變數以關聯陣列形式傳入當前指令碼。 所以pytho
php中$_POST接收不到參數問題
總結 .org http請求 特殊 不能 長度 描述 tip 並且 問題描述:PHP可以接收_GET、_SERVER、_COOKIE等參數,php://input可以讀取沒有處理過的POST數據,獨獨_POST接收不到post參數。 原因: php://input可以讀
axios 發 post 請求,後端接收不到引數的詳細解決方案
問題描述 :axios post 請求或者get請求後接收不到引數 後端接收設定: @RequestParam @RequestBody設定的原因 由於spring的RequestParam註解接收的引數是來自於request
post請求傳json後臺接收不到
需要將請求頭的設定成:’Content-Type’: ‘application/json;charset=UTF-8;’, 如果傳字串則是:’Content-Type’: ‘application/x
Python # 一個api接口調用POST請求
-h curl ont log lib cati values urlencode print ### import urllib2,json url=‘http://xxx.xxx.com.cn/api/v1‘ data=json.dumps({‘organId‘:‘1
ajax用post請求後臺controller實現前端後臺互動 傳兩個引數 ,後臺controller接收處理
PS→無奈:生氣,就是拿別人的過錯來懲罰自己。原諒別人,就是善待自己。 前臺jsp: $.ajax({ function getPage(page,size) { var postData={ "page":"1",
PHP form表單post提交 $_POST接收不到資料
新手,最近在學習PHP,WAMP環境下碰到了同樣的問題,裝完PhpStorm後寫了個表單頁面和一個後臺列印$_POST的測試程式,POST方法接收不到資料,GET和REQUEST可以,另外如果把專案直接放在Apache伺服器的工作目錄下,然後在位址列輸入localhost是可以正常執行的。前面有答主說到了埠
采用Post請求的方式提交參數並導出excel
我們 false 但是 限制 put 數據 lba bsp 翻轉 一般情況下,我們都是采用get請求的方式導出excel。例如采用如下方式: var exportUrl = ‘/xxx;‘; window.open(exportUrl); 導出excel所需的邏輯參數拼接
python request post請求body中有json數組
發送 方法 錯誤 access token 字符 pre ade 註意 今天被這個卡了好久,最後解決發現是個小問題,哈哈 記錄: 用request發送post請求,原來當body都是普通的字符串和數字時一切順利,今天遇到了body裏面有json數組,結果就是報參數錯誤 解決
CURL實現發送Get和Post請求(PHP)
結果 基本 釋放 初始 常用 header 理解 介紹 今天 1.cURL介紹 cURL 是一個利用URL語法規定來傳輸文件和數據的工具,支持很多協議,如HTTP、FTP、TELNET等。最爽的是,PHP也支持 cURL 庫。本文將介紹 cURL 的一些高級特性,以及
RestTemplate遠程調用POST請求:HTTP 415 Unsupported Media Type
return 請求 edi pan lai supported ont mes attr 這是本項目的接口 稱為client @POST @Path("/{urlcode}") @Consumes(MediaTypes.JSON_UTF_8)
node總結之GET/POST請求的傳送和接收了解下
在我們的現實場景中,我們的node伺服器都需要跟使用者的瀏覽器打交道,也就是說建立一個互動的關係。那麼,這個關係之間的通訊基本上比較熟悉的就是get/post這種方式了。咱們這刺激來簡單看下在node中,是如何接收和處理這些關係的。 由於GET請求直接被嵌入在路徑中,URL是完整的請求路徑,
python用requests請求,報SSL:CERTIFICATE_VERIFY_FAILED錯誤
requests模組之前一直正常的,某一天開始對https的請求都拋錯誤了: requests.exceptions.SSLError: [Errno 1] _ssl.c:504: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:cer
python中post請求json資料且返回json資料處理
上篇講到以json形式傳送post請求。 此次為 post請求返回物件對json 時的處理辦法 請求 #請求 response = requests.post(url, data=json.dumps(pyload),headers=headers).text
python傳送post請求上傳檔案,無法解析上傳的檔案
前言 近日,在做介面測試時遇到一個奇葩的問題。 使用post請求直接通過介面上傳檔案,無法識別檔案。 遇到的問題 以下是抓包得到的資訊: 以上請求是通過Postman直接傳送請求的。 在這裡可以看到訊息頭裡包含:Access-Token和Content-Type 因此在在使用python直接
用post請求用query+body傳參
用post請求用query+body傳參 1.url里加上query需要傳的引數(name:majuan) 2.data裡放入body要傳的引數(tel) let tel = 11111 dd.httpRequest({ headers: { 'Con
python---get/post請求下載指定URL返回的網頁內容,出現gzip亂碼處理。設定Accept-Encoding為gzip,deflate,返回的網頁是亂碼
python—get/post請求下載指定URL返回的網頁內容,出現gzip亂碼處理。設定Accept-Encoding為gzip,deflate,返回的網頁是亂碼 1、指令碼 # --*-- coding:utf-8 --*-- #coding:utf-8
Spring mvc 針對get 和 post 請求引數的不同接收方式
GET 請求 針對與於get請求spring mvc控制層主要接收方式如下 1.直接在controller接收引數,引數名稱要與getURl中傳遞的引數一致 get url : https://localhost:8080/demo/login?&userName=
axios傳送請求時用post請求在請求url後面拼接引數
像這種情況明明是post請求,但是在請求的url中拼接了引數 其實是在axios.create的時候用了params 1. params會將請求的引數拼接到url中去,用於get請求 2.data是新增到請求體(body)裡面去,用於post請求
python用requests請求百度介面報“SSL: CERTIFICATE_VERIFY_FAILED”
SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581) 今天想試用一下百度的語音識別API,附帶步驟: 1. 先去百度開放雲平臺註冊,成為開發者,稽核可能需要時間的,