2012-10-11 2 views
2

API를 사용하여 odesk 계정에 작업을 게시하려고합니다. 불행히도, 나는 그렇게하는 데 어려움을 겪고있다.odesk API POST 작업 (파이썬 포함)

인증을 받고 내 작업을 얻을 수 있었지만 작업 게시를 시도하면 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 하지만 그것은 해결할 생각하지 않습니다.

난 우편 배달을 보내려고 그리고 난 얻을 : 내가 odesk에 보낼 다음 패킷을 시도했습니다

"필요한 모든 PARAMS가 작성 아닙니까." 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를 모든 언어로 사용해 본 경험이 있다면 도움이 될 것입니다.

감사합니다.

답변

1

python-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() 
를 수행 포기하고 oDesk에 게시 작업을 자동화하는 대신 기계화를 사용