我需要PUT
在python中使用HTTP将一些数据上传到服务器.从我对urllib2文档的简要介绍来看,它只能用于HTTP POST
.有没有办法PUT
在python中做HTTP ?
我想只使用本机Python库将JSON编码数据发送到服务器.我喜欢请求,但我根本无法使用它,因为我不能在运行脚本的机器上使用它.我需要在没有的情况下这样做.
newConditions = {"con1":40, "con2":20, "con3":99, "con4":40, "password":"1234"}
params = urllib.parse.urlencode(newConditions)
params = params.encode('utf-8')
req = urllib.request.Request(conditionsSetURL, data=params)
urllib.request.urlopen(req)
Run Code Online (Sandbox Code Playgroud)
我的服务器是本地Wamp服务器.我总是得到一个
urllib.error.HTTPError:HTTP错误500:内部服务器错误
我100%确定这不是服务器问题,因为同一台机器上具有相同网址的相同数据与同一服务器一起使用请求库.(也适用于发送POST请求的程序).我无法找出它为什么这样做......我自己编写了API.
我可以使用urllib来获取或发布请求,但是如何进行DELETE-和PUT请求呢?
好的,所以我使用与此非常类似的代码(https://gist.github.com/metadaddy-sfdc/1374762)来获取身份验证令牌并使用libur2为python中的其余api执行简单查询以获取销售人员数据库,但是当我尝试按照本答案中给出的说明时如何使用urllib2制作HTTP DELETE方法?,
我无法让它工作,所以我可以使用删除,两个代码都使用liburl但它们似乎是不同的格式,所以我不知道如何将堆栈交换提供的解决方案应用到我的代码,因为你可以告诉我我是初学者,所以任何帮助将不胜感激
编辑:这是我用密码/密码消失的代码
import urllib
import urllib2
import json
import pprint
import re
import subprocess
def authorise():
consumer_key = '**********************'
consumer_secret = '**************'
username = '***********'
password = '*****************'
login_server = 'https://login.salesforce.com'
token_url = login_server+'/services/oauth2/token'
params = urllib.urlencode({
'grant_type': 'password',
'client_id': consumer_key,
'client_secret': consumer_secret,
'username': username,
'password': password
})
data = urllib2.urlopen(token_url, params).read()
oauth = json.loads(data)
return oauth
def country_id_query(params):
query_url = oauth['instance_url']+'/services/data/v23.0/query?%s' % params
headers = {
'Authorization': 'OAuth '+oauth['access_token']
}
req = urllib2.Request(query_url, …
Run Code Online (Sandbox Code Playgroud)