2017-02-27 76 views
0

我發送文本由cUrl作者獲取原始的POST有效載荷在瓶

curl -X POST -d "Separate account charge and opdeducted fr" http://192.168.50.8/text 

,並試圖讓

@application.route("/text",methods=['POST']) 
def clausIE(): 
     content = request.data 
     text = str(content, encoding="utf-8") 

但得到空字符串,是我做錯了嗎?

注:我用Python3.6

+0

嗯,你需要返回的東西在clauseIE。 – aitchnyu

+0

使用'request.get_data()'而不是'request.data'應該可以解決問題。 – Mark

回答

2

這是不是一個真正的瓶的問題,您使用了錯誤的curl選項。

-d開關只能用於表單數據。 curl會自動將Content-Type標題設置爲application/x-www-form-urlencoded,這意味着Flask將加載原始內容並將其解析爲表單。您必須手動設置不同的Content-Type標頭,使用-H 'Content-Type: application/octet-stream'或另一種更適合您的數據的MIME類型。

你也想用--data-binary,不-d--data),因爲後者也試圖解析內容轉換成鍵值領域,將刪除換行符:

curl -X POST -H 'Content-Type: application/octet-stream' \ 
    --data-binary "Separate account charge and opdeducted fr" \ 
    http://192.168.50.8/text