Velvet Star Monitor

Standout celebrity highlights with iconic style.

updates

Send x-api-key with POST request header Python

Writer Matthew Harrington

I was given a problem that stated:

#Write a script that uses a web API to create a social media post.
#There is a tweet bot API listening at GET / returns basic info about the API.
#POST / with x-api-key:tweetbotkeyv1 and data with user tweetbotuser and a status-update of alientest.

My code responds that I did not provide the x-api-key, but it is in the header. My code:

#
# Tweet bot API listening at
# GET / returns basic info about api. POST / with x-api-key:tweetbotkeyv1
# and data with user tweetbotuser and status-update of alientest
#
import urllib.parse
import urllib.request
data = urllib.parse.urlencode({ "x-api-key": "tweetbotkeyv1", "connection": "keep-alive", "User-agent": "tweetbotuser", "status-update": "alientest"
})
url = ""
data = data.encode("ascii")
with urllib.request.urlopen(url, data) as f: print(f.read().decode("utf-8"))

returns:

{"success": "false", "message":"x-api-key Not provided", "flag":""}

Is there something wrong with the header?

1

1 Answer

The url, parameters and header must be submitted in strict order:urllib.request.Request(url, post_param, header)the result will be: {"success": "true", "message":"Well done", "flag":"<the flag will be show here>"}

Here is the working solution

import urllib.parse
import urllib.request
url = ""
header={"x-api-key" : 'tweetbotkeyv1'}
post_param = urllib.parse.urlencode({ 'user' : 'tweetbotuser', 'status-update' : 'alientest' }).encode('UTF-8')
req = urllib.request.Request(url, post_param, header)
response = urllib.request.urlopen(req)
print(response.read())
3

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy