Skip to main content
 首页 » 编程设计

python之使用 Python 的 odesk API POST 作业

2025年05月04日8lovecherry

我正在尝试使用他们的 API 将工作发布到 odesk 帐户。不幸的是,我在这样做时遇到了麻烦。

我能够获得身份验证并获得我的工作,但是当我尝试发布工作时,它返回 400 错误。

这里是响应主体。

HTTP Error 400: Bad Request 
Exception at POST https://www.odesk.com/api/hr/v2/jobs.json 
Server: nginx 
Date: Thu, 11 Oct 2012 21:38:08 GMT 
Content-Type: application/json 
X-Odesk-Error-Code: 4 
X-Odesk-Error-Message: Parameter job_data is missing or invalid 
Last-Modified: Thu, 11 Oct 2012 21:38:08 GMT 
Accept-Ranges: bytes 
Cache-Control: no-store 
Pragma: no-cache 
Expires: Thu, 01 Jan 1970 00:00:00 GMT 
Transfer-Encoding: chunked 
Connection: close 

我也在使用 python-odesk。 我跟着这个到了T,我得到了上面的错误。 https://github.com/odesk/python-odesk/blob/master/examples/get_create_update_jobs.py

有一个讨论: https://www.odesk.com/community/node/19676 但我不认为它已经解决了。

我什至尝试通过 Postman 发送,但我得到了: “没有填写所有必需的参数”

我已经尝试将以下数据包发送到 odesk。 假设 XXXXXX 是有效的 buyer_team__reference。

    data = { 
            'buyer_team__reference': XXXXXX, 
            'title': 'Test job from API', 
            'job_type': 'hourly', 
            'description': 'this is test job, please do not apply to it', 
            'visibility': 'invite-only', 
            'category': 'Web Development', 
            'subcategory': 'Web Programming', 
            'budget': 10, 
            'duration': 7, 
    } 

或

    data = { 
            'job_data': { 
                    'buyer_team__reference': XXXXXX, 
                    'title': 'Test job from API', 
                    'job_type': 'hourly', 
                    'description': 'this is test job, please do not apply to it', 
                    'visibility': 'invite-only', 
                    'category': 'Web Development', 
                    'subcategory': 'Web Programming', 
                    'budget': 10, 
                    'duration': 7, 
            } 
    } 

注意:我已经尝试过这个类似数据包的许多变体,但都没有成功。

如果有人有使用任何语言的 odesk API 的经验,任何帮助都会很棒。

谢谢。

请您参考如下方法:

尝试后python-odesk ,我放弃并使用 mechanize 来自动将职位发布到 oDesk

执行pip install mechanize

import mechanize,cookielib 
# Browser 
br = mechanize.Browser() 
 
# Cookie Jar 
cj = cookielib.LWPCookieJar() 
br.set_cookiejar(cj) 
 
# Browser options 
br.set_handle_equiv(True) 
br.set_handle_gzip(True) 
br.set_handle_redirect(True) 
br.set_handle_referer(True) 
br.set_handle_robots(False) 
 
# Follows refresh 0 but not hangs on refresh > 0 
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1) 
 
# Want debugging messages? 
#br.set_debug_http(True) 
#br.set_debug_redirects(True) 
#br.set_debug_responses(True) 
 
# User-Agent (this is cheating, ok?) 
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')] 
 
# Open odesk site 
r = br.open('https://www.odesk.com/login.php') 
form = br.forms().next()  # the login form is unnamed... 
print form.action 
form['login'] = 'yourlogin' 
form['password'] = 'yourpassword' 
br.form = form 
br.submit() 
 
print br.geturl() 
#your form data goes here 
r = br.open(br.geturl() + 'new/') 
print br.geturl() 
br.select_form(name="jobsPost")  # the form is unnamed... 
br.find_control(name="category").value = ['Writing & Translation'] 
br.find_control(name="subcategory").value = ['35'] 
br.form['title'] = 'Filling up a profile' 
br.form['description'] = 'Require assistance in filing up our profile' 
br.find_control(name="job_type").value = ['Fixed'] 
br.form['job_budget'] = '10' 
br.form['job_finish_date'] = '10-14-2012' 
br.find_control(name="visibility").value = ['private'] 
br.submit() 
 
print br.geturl()