【发布时间】:2012-12-06 04:14:52
【问题描述】:
为什么这个简单的代码不向我的服务发布数据:
import requests
import json
data = {"data" : "24.3"}
data_json = json.dumps(data)
response = requests.post(url, data=data_json)
print response.text
我的服务是这样使用 WCF 开发的:
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "/test", ResponseFormat =
WebMessageFormat.Json,RequestFormat=WebMessageFormat.Json)]
string test(string data );
注意:如果删除输入参数data 一切正常,可能是什么问题。
【问题讨论】:
-
当你说它不起作用时,你到底是什么意思?从最后一个“注释”开始,它听起来不仅仅是“忽略我的数据”(因为没有数据“一切正常”),而是确实发生了 ?
-
好吧,我想我找到了问题所在。它与 {"data" : "24.3"} .. 出于某些原因我需要将它作为一个字符串括起来当我的请求通过时.. 像这样 "{data: 24.3}" .. 任何人都愿意解释原因?
-
你试过
data = {"data": 24.3}(注意:一个浮点数,而不是一个字符串)?我不知道 WCF,但这是另一种解释:string test(string data)可能意味着您的服务器需要一个字符串作为输入(data_json = '"something"'(注意:它是一个 Python 字符串,其中包含代表 json 字符串的 json 文本)),它不需要一个 json 对象。严格来说,“application/json”必须代表一个 json 对象(例如,data_json = '{"a", 1}')或一个 json 数组(例如,data_json = '[1,2,3]'),因此只接受一个字符串是不正确的。
标签: python python-2.7 python-requests