rayandfz
HTTP Request formurlencoded problem
Hello,
I’m new to Elixir and I come from the world Javascript
To learn the language, I decided to redo a reverse API that I had done a few days ago in JS.
import fetch from 'node-fetch'
export default class Authentification {
async login() {
return (await fetch("https://api.ecoledirecte.com/v3/login.awp", {
"headers": {
"accept": "application/json, text/plain, */*",
"accept-language": "fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7",
"content-type": "application/x-www-form-urlencoded",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-site"
},
"referrer": "https://www.ecoledirecte.com/login",
"referrerPolicy": "no-referrer-when-downgrade",
"body": "data={\n \"identifiant\": \"" + process.env.USERNAME + "\",\n \"motdepasse\": \"" + process.env.PASSWORD + "\"\n}",
"method": "POST",
"mode": "cors"
})).json()
}
}
My problem being that I’m trying to do a code style but I get an error message from the api telling me that the body is incorrect, I don’t really know how to do it, could you direct me?
Would you have a good resource to understand Elixir and the OTP? I come from the imperative world and I have a lot of pain making effective code in Elixir.
def main() do
HTTPoison.post "https://api.ecoledirecte.com/v3/login.awp", "{\"body\": data={\"identifiant\": \"secret\"\n \"motdepasse\": \"secret\"\n}}", [{"Content-Type", "application/x-www-form-urlencoded"}]
end
Most Liked
al2o3cr
I don’t think you want the body part here - that was from the JS, not something that should be sent to the API.
The data= bit here is weird, but matches the observed behavior and the behavior described in this post:
The format this is expecting is odd; it appears to be a URL-encoded payload containing exactly one key data containing incompletely-escaped JSON. Prettified from that login page’s source:
if (config.data && "object" == typeof config.data) {
config.data.token = $sessionStorage.token;
var replacer = function(key, value) {
return "string" == typeof value ? (value = value.replace(/%/g, "%25"),
value = value.replace(/&/g, "%26"),
value = value.replace(/\+/g, "%2B")) : value
}
, strVal = JSON.stringify(config.data, replacer, 4);
config.data = "data=" + strVal
}
Popular in Questions
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #elixirconf-us
- #advent-of-code
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #hex
- #security









