Home > Software engineering >  AxiosError: getaddrinfo ENOTFOUND
AxiosError: getaddrinfo ENOTFOUND

Time:01-12

I m newbie who is learning to play with API. I m getting POST req error while using axios.

In docs of API which I want to interact, they give curl example.

curl -X POST https://ssuploader.streamsb.com/upload/01
 -d "api_key=948324jkl3h45h"
 -d "@path/filename.mp4"
 -H "Content-Type: application/x-www-form-urlencoded"

I am trying to make that POST request using axios. I wrote simple script like this.

const axiosConfig = {
    headers : { 
        "Content-Type": "application/x-www-form-urlencoded"
    }
}
const file = __dirname   "/video/Video.mp4";
const fileData = fs.readFileSync(file);
const data = `api_key=${API_KEY}&${fileData}`;

axios.post('https://ssuploader.streamsb.com/upload/01', data, axiosConfig).then((result) => {
  console.log(result.data);  
}).catch((err) => {
    console.log("Getting Error : ", err);
});

I am getting this error.

Getting Error :  AxiosError: getaddrinfo ENOTFOUND ssuploader.streamsb.com

I m really new to interacting with API, so that I thought some of my structure was wrong while converting curl to axios. I really don't know what to do. I mean I can't figure out my false. Can anyone help me? Thank you so much.


Some Changes

I figure out some of my false with the help of answers. I forget to GET the server first. So that I updated my code to this.

const file = __dirname   "/video/Video.mp4";
const fileData = fs.createReadStream(file);
const formData = new FormData();
formData.append('file', fileData);
formData.append('api_key', API_KEY);
console.log(formData)


axios.get(`https://api.streamsb.com/api/upload/server?key=${API_KEY}`).then(result => {
    const url = result.data.result;
    axios.post(url, formData, axiosConfig)
  .then((result) => {
    console.log(result.data);
  }).catch((err) => {
    console.log("Getting Error : ", err);
  });

})

But I am getting new Error.

AxiosError: Request failed with status code 400

CodePudding user response:

As I understand from the documentation this is 2 step process. At first you need to get the upload URL (server as they call it) and then use it to upload your file.

So use something like this:

axios.get(`https://api.streamsb.com/api/upload/server?key=${API_KEY}`).then((result) => {
  const url = result.data.result;
  // your post request to this url here
}).catch((err) => {
    console.log("Getting Error : ", err);
});

CodePudding user response:

You are sending fileData as a string in the data Object

  1. Use 'Content-Type': 'multipart/form-data'instead of using "Content-Type": "application/x-www-form-urlencoded"
  2. Code will be like this

import FormData from 'form-data';

const axiosConfig = {
  headers: {
    'Content-Type': 'multipart/form-data'
  }
}

const file = __dirname   "/video/Video.mp4";
const fileData = fs.createReadStream(file);

const formData = new FormData();
formData.append('file', fileData);
formData.append('api_key', API_KEY);

axios.post('https://ssuploader.streamsb.com/upload/01', formData, axiosConfig)
  .then((result) => {
    console.log(result.data);
  }).catch((err) => {
    console.log("Getting Error : ", err);
  });

If you have any query, you can ask

CodePudding user response:

It's them, not you.

There is no DNS record for ssuploader.streamsb.com (you can enter it into https://mxtoolbox.com/DNSLookup.aspx to check), which means that when you try to connect to it, it leads nowhere.

Unless you do some digging and find a domain from them that has a DNS record, there isn't anything you can do.

  • Related