2013-06-24 55 views
0

好吧,所以我使用的代碼非常相似(https://gist.github.com/metadaddy-sfdc/1374762) 獲取身份驗證令牌和執行簡單的查詢使用libur2的其餘api在python的銷售隊伍數據庫,但當我試圖按照在這個答案給出的指示How to make HTTP DELETE method using urllib2?,無法使用liburl2與Python for REST api刪除使用liburl2

我不能讓它的工作,使我可以使用刪除,兩個代碼使用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, None, headers) 
    data = urllib2.urlopen(req).read() 
    result = json.loads(data) 
    id = result['records'][0]['Id'] 
    return id 

oauth = authorise() 
token = oauth['access_token'] 
print "\ntoken is = " + token 

params = urllib.urlencode({ 
    'q': 'SELECT id from Country__c WHERE name = \'A New Found Land\'' 

}) 
id = country_id_query(params) 
print "\nCountry id is "+id + "\n" 

我期待找出我需要添加到這個讓DELETE工作

+1

如果沒有看到代碼很難給出任何建議。 –

+0

現在發佈更新 – kujosHeist

+0

它只是「不要刪除」 - 或者是否有任何錯誤信息?什麼是服務器響應的[http status code](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html)? –

回答

5

好了,找到了解決辦法以上爲任何有類似問題的人:

def delete_country(id): 
    query_url = oauth['instance_url']+'/services/data/v23.0/sobjects/Country__c/%s' % id + '/' 
    headers = { 
     'Authorization': 'OAuth '+oauth['access_token'] 
    } 
    opener = urllib2.build_opener(urllib2.HTTPHandler) 
    req = urllib2.Request(query_url, None, headers) 
    req.get_method = lambda: 'DELETE' # creates the delete method 
    url = urllib2.urlopen(req) # deletes database item