Search code examples
javascriptpostpostmantestcomplete

POST request return 400 Bad request


I have a problem with a POST request to the server. Thanks to basic auth I managed to authenticate but the request still returns 400 Bad Request. Do you know what I am doing wrong. The same points through the postman application pass to 201 code.

Thank you for your advice!

My code:

function PostImportProduct()
{
var address = "https://logdemota-dev.st.test.cz:10351/MYSTOCKLOGISTICSTAWMSINT_DEV/V1/product";
var username = "API_TEST";
var password = "xxxxxx";

// Define the request body JSON string
var requestBody = '{"extIsId":"abc/777","productCode":"ExterniKodSort","name":"TA_API777","type":0,"measurementUnitCode":"KS","weightGross":1.1,"weightNett":1.1,"grossDimension":{"height":1.1,"width":1.1,"depth":1.1,"volume":1.1},"pictureUrl":"www.aaa.cz/SORT.png","expirationMandatory":1,"serialNumbersRecords":{"inboundMandatory":1,"outboundMandatory":1},"batches":1,"barcodes":[{"barcode":123456,"active":1,"default":1,"measurementUnitCode":"ks"}]}surementUnitCode":"KS","warehouseCode":"3S20","weightGross":10.5,"weightNett":9.5,"grossDimension":{"height":2,"width":1.5,"depth":3.5,"volume":10.5},"pictureUrl":"","expirationMandatory":1,"serialNumbersRecords":{"inboundMandatory":1,"outboundMandatory":1},"batches":1,"barcodes":[{"barcode":"EAN80","active":1,"default":1,"measurementUnitCode":"KS"},{"barcode":"EAN81","active":1,"default":0,"measurementUnitCode":"KS"}]}';

// Convert the user credentials to base64 for preemptive authentication
var credentials = aqConvert.VarToStr(dotNET.System.Convert.ToBase64String
(dotNET.System_Text.Encoding.UTF8.GetBytes_2(username + ":" + password)));

Log.Message(credentials)

var aqHttpRequest = aqHttp.CreatePostRequest(address, username, password);
// Send the Authorization header with a request
aqHttpRequest.SetHeader("Authorization", "Basic " + credentials);

var aqHttpResponse = aqHttpRequest.Send(requestBody);

// Read the response data
Log.Message(aqHttpResponse.AllHeaders); // All headers

Log.Message(aqHttpResponse.StatusCode); // A status code
Log.Message(aqHttpResponse.StatusText); // A status text
Log.Message(aqHttpResponse.Text); // A response body
}```

Solution

  • Have you tried json.stringify() ?

    var requestBody = JSON.stringify({
                        extIsId: "abc/777",
                        productCode: "ExterniKodSort",
                        name: "TA_API777"
                        .... // add all params you need
                    })
    var aqHttpResponse = aqHttpRequest.Send(requestBody);