I have an App Engine service, running Python 3.7, that needs to call and get a response from one of my Cloud Functions via the https.oncall trigger.
I thought I could do so with the following:
import logging
from sys import exit
import firebase_admin
import requests
import google.cloud.logging
client = google.cloud.logging.Client()
client.setup_logging()
firebase_admin.initialize_app()
response = requests.post("https://us-central1-myproject.cloudfunctions.net/functionname", data={"foo": "bar"})
if response.status_code != 200:
exit("Could not call function! :(") # This is happening
logging.info(f"Yay! Here is the result: {response.text}")
# do something else
exit()
However, I'm getting Request has incorrect Content-Type. from Cloud Functions.
I've tried multiple variations on the request syntax such as: data='{"foo": "bar"}' and data=json.dumps({"foo": "bar"}) but all I can get back is either Request has incorrect Content-Type. or Request has incorrect Content-Type. application/x-www-form-urlencoded.
How do I properly attach my dictionary to my request so that the function receives it in the form of application/json as noted in the Cloud Function docs?
I've read other posts that suggest using the json.dumps() function will tell request to use application/json but Cloud Functions wasn't happy about it.