这是要求:
所有写API都需要JSON编码的内容。许多人也接受文件上传。因此,我们希望API请求具有内容类型multipart / form-data,并且JSON主体的请求应具有名称 data 。
$ curl -F file=@/Users/alunny/index.html -u username@gmail.com -F 'data={"title":"API V1 App","package":"com.alunny.apiv1","version":"0.1.0","create_method":"file"}' https://build.phonegap.com/api/v1/apps
* 从上面的网址中,留下该电子邮件,因为我已经拥有了我可以使用的身份验证令牌*
这是我的代码:
url='url?auth_token='+token //i have token , so no probs
da = {"create_method" : "file","title":"s9fsdf"}
da = {"data" : da}
da = urllib.urlencode(da)
req = urllib2.Request(url)
req.add_data(json.dumps(da))
req.add_header('Content-Type', 'multipart/form-data')
#req.add_header('Accept', 'application/json')
result = ""
try:
result = urllib2.urlopen(req)
except urllib2.URLError,e :
print "Code : "+str(e.code)
print e.read()
低于错误:
Code : 400
{"error":"no create_method specified: file, remote_repo, or hosted_repo"}
我认为我发送数据的方式是错误的,任何人都可以告诉我正确的方法。当我们发送数据时,它应该有名称“data”。
答案 0 :(得分:1)
未经测试,但它可能比其他方式更好地对json数据进行urlencoding:
jsondata = {"create_method" : "file","title":"s9fsdf"}
data = {"data" : json.dumps(jsondata)}
data = urllib.urlencode(data)
req = urllib2.Request(url)
req.add_data(data)