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"}

データの送信方法が間違っていると思います。誰か正しい方法を教えてください。データを送信するときは、 "data" という名前にする必要があります。

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 に答える