JSON api - Bad Request 400 Error

Hello everybody,

I'm trying to send some orders from NAV2016 in JSON format via an api.
First i checked the api connection with GET method and succesfully get the hello world response from the api's test connection url.
Then i created the json file, and tried the POST method with it but geting the Bad Request 400 error.

Here's my code.
HttpWebRequest := HttpWebRequest.Create('https://api.order');
HttpWebRequest.Timeout := 30000;
HttpWebRequest.Headers.Add('Authorization','Basic username-pass');
HttpWebRequest.PreAuthenticate := TRUE;
HttpWebRequest.ContentType := 'application/json';
HttpWebRequest.Method := 'POST';
CookieContainer := CookieContainer.CookieContainer;
HttpWebRequest.CookieContainer := CookieContainer;

RequestStr := HttpWebRequest.GetRequestStream;
StreamWriter := StreamWriter.StreamWriter(RequestStr,Encoding.UTF8);
StreamWriter.Write(JSonText);
StreamWriter.Flush;

HttpWebResponse := HttpWebRequest.GetResponse;
GetResponseStream(HttpWebResponse,ResponseString);

I copied the same JSonText (which i also saved in a .txt file) and test it with the Postman application with the same credentials and everything and it succeded. Now i'm missing something but couldn't figure it out. Any tip for me?

Answers

  • zychzych Member Posts: 20
    Hi,

    The username-pass need to be encoded in Base64. You can use Fiddler Text wizard for this or other tools that convert string to Base64.

    you should convert username:password to Base64 then put the result into below headers

    HttpWebRequest.Headers.Add('Authorization','Basic UsernamePasswordinBase64');
Sign In or Register to comment.