13
function LikesDislikes () {

    $.ajax({
        url: 'http://gdata.youtube.com/feeds/api/videos/keDZXXDxK1c/ratings',
        type:"POST",
        data: '<?xml version="1.0" encoding="UTF-8"?>
            <entry xmlns="http://www.w3.org/2005/Atom"
                   xmlns:yt="http://gdata.youtube.com/schemas/2007">
                <yt:rating value="like"/>
            </entry>',
        headers: {
            "Content-Type":"application/atom+xml",
            "Content-Length":,
            "Authorization":"Bearer ya29.AHES6ZQ59RrQgujZmIjssBdYlwwLVrpCodnirdLROi7-g7U",
            "X-GData-Key":"key=AIzaSyAPrtP2Tq4m5WVInCvCWptVAKPhQ4SQNZA",
            "GData-Version":"2"
        },
        // Content-Type:"application/atom+xml",
        error: function() { alert("No data found."); },
        // contentType: "text/xml",
        success: function (response) {
            alert('response:' + response);
        }
   });

}

How can I calculate the Content-Length in the above code?

Anoop
  • 23,044
  • 10
  • 62
  • 76
user2595123
  • 141
  • 1
  • 1
  • 6

2 Answers2

9

As said in specs

The Content-Length entity-header field indicates the size of the entity-body, in decimal number of OCTETs

Please look as this question String length in bytes in JavaScript.

Basically if your data contains only ASCII characters everything should be quite easy

function LikesDislikes () {

    var data = '<?xml version="1.0" encoding="UTF-8"?>
    <entry xmlns="http://www.w3.org/2005/Atom"
           xmlns:yt="http://gdata.youtube.com/schemas/2007">
        <yt:rating value="like"/>
    </entry>';

    $.ajax({
        url: 'http://gdata.youtube.com/feeds/api/videos/keDZXXDxK1c/ratings',
        type:"POST",
        data: data,
        headers: {
            "Content-Type":"application/atom+xml",
            "Content-Length": data.length,
            "Authorization":"Bearer ya29.AHES6ZQ59RrQgujZmIjssBdYlwwLVrpCodnirdLROi7-g7U",
            "X-GData-Key":"key=AIzaSyAPrtP2Tq4m5WVInCvCWptVAKPhQ4SQNZA",
            "GData-Version":"2"
        },
        // Content-Type:"application/atom+xml",
        error: function() { alert("No data found."); },
        // contentType: "text/xml",
        success: function (response) {
            alert('response:' + response);
        }
    });
}
twil
  • 6,032
  • 1
  • 30
  • 28
1

The Content-Length entity header is indicating the size of the entity-body, in bytes, sent to the recipient.

Syntax

Content-Length: <length>

Directives

<length>
The length in decimal number of octets.

Content-Length Calculation

  • If the request body is a String you can simple use the length of the body.
  • If the request body is a JSON you can just stringify the body.

const requestBody =
{
  data: 
  {
     ...
  }
};
xhr.setRequestHeader("Content-Length", JSON.stringify(requestBody).length.toString());

Read more at: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Length

Gil Epshtain
  • 8,670
  • 7
  • 63
  • 89