5

I need to replicate the below API call in Robot Framework:

curl -X POST "http://xyz/api/createApp" -H "Content-Type:application/json" -d @/tmp/testfile.json

testfile.json has a json payload. I cannot send the content of Json file as body.

I have imported the HTTP libraries. But do not see any key-word to make an API call with file.

3 Answers 3

10

Bulkan's robotframework-requests is nice. But if you can get by with less, you can do your own local lib/posthttp.py in a few lines like this:

import requests
import json

def do_requests_post( url=None, data=None, headers={"Content-Type":"application/json"}):
    return requests.post( url, data=data, headers=json.loads(headers) )

def do_requests_request( method="GET" url=None, data=None, headers={}):
    return requests.request( url, method=method, data=data, headers=json.loads(headers))

Note that the return object is the rich-and-powerful "Response" which has member functions like .json() (which returns a dict if the .text is sensed to be JSON) and .status_code (int).

Sign up to request clarification or add additional context in comments.

1 Comment

Notes: 1) this mini-lib leaves things like cookies to the reader; 2) the only reason you can't call Requests directly from RF is because RF's auto-magic case-munging conflates requests.Request object and request.request() function.
5

http://bulkan.github.io/robotframework-requests/#Post has files parameter. And what you could do is use Get File keyword from OperatingSystem library and pass that to your Post keyword.

Comments

0

It perfectly works when using double backslashes and quotes like:

curl -i -H 'Accept: application/json' -H 'Content-Type: application/json' -X POST -d "{\"target\" : \"5142221345\",\"source\" : \"432567890\",\"messages\" : [ { \"format\" : \"AMR\", \"data\" : \"binarydata...\" } ]}" http://10.4.4.11:8089/v1/voice/add

1 Comment

That's gross. Enclose the JSON in single-quotes, instead of escaping all the double-quotes.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.