0

这是要求:

所有写入 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='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"}

我认为我发送数据的方式是错误的,谁能告诉我正确的方式。当我们发送数据时,它应该有名称“数据”。

4

1 回答 1

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)
于 2012-07-02T08:16:29.913 回答