Bytes to be written to the stream exceed the Content-Length bytes size specified.

Hi,

I am getting this error while passing Unicode string, For example when I am screening a name

ÖMER HİRFANOĞLU

I am getting error

"Bytes to be written to the stream exceed the Content-Length bytes size specified."

How I can send this text so that it can screen without any error.

Currently I am using UTF8Encoding

UTF8Encoding encoding = new UTF8Encoding();
byte[] byte1 = encoding.GetBytes(postData);


Here is my code

string postData = "{\"entityType\":\"" + entityType + "\",\"groupId\":\"" + groupId + "\",\"providerTypes\":[\"WATCHLIST\"],\"name\":\"" + screenText + "\"}";
string msg = postData;
var contentLength = msg.Length; UTF8Encoding encoding = new UTF8Encoding();
byte[] byte1 = encoding.GetBytes(postData);

// Assemble the POST request - NOTE every character including spaces have to be EXACT

// for the API server to decode the authorization signature

string dataToSign = "(request-target): post " + gatewayurl + "cases/screeningRequest\n" +

"host: " + gatewayhost + "\n" + // no https only the host name

"date: " + date + "\n" + // GMT date as a string

"content-type: " + "application/json" + "\n" +

"content-length: " + contentLength + "\n" +

msg;

string authorisation = "Signature keyId=\"" + apikey + "\",algorithm=\"hmac-sha256\",headers=\"(request-target) host date content-type content-length\",signature=\"" + hmac + "\"";

Best Answer

  • Prabhjyot
    Answer ✓

    hmy-documentscode-v12cwc1postrequestcs.txt@ziad.abourizk,

    Thank you for the information.

    From the above provided information, it seems that you are using the variable 'byte1' for holding the UTF-8 encoded value. However, you are not calculating the length of this encoded value, which might be the reason for calculation of incorrect contentLength. Can you please try calculating the content length of the UTF-8 converted postData and see the outcome?

    contentLength = byte1.length;

    I am attaching code example (c#) file to this reply for your reference.

    Hope this helps.

Answers

  • @ziad.abourizk,

    Thank you for the query.

    Can you please confirm us the content length which is being calculated for the request body which you are sending in the POST request?

    Also, can you please let us know the programing lanaguage which you are using?

  • Hi,

    I am using C#.Net.

    {"entityType":"ORGANISATION","groupId":"xxx","providerTypes":["WATCHLIST"],"name":"ERMAKSAN GEMİ VE TEKNE YAN SANAYI"}

    contentLength : 151

    DatatoSign:

    (request-target): post /v1/cases/screeningRequest
    host: rms-world-check-one-api.thomsonreuters.com
    date: Mon, 01 Apr 2019 14:06:05 GMT
    content-type: application/json
    content-length: 151
    {"entityType":"ORGANISATION","groupId":"xxx","providerTypes":["WATCHLIST"],"name":"ERMAKSAN GEMİ VE TEKNE YAN SANAYI"}

    authorization:

    Signature keyId="xxx",algorithm="hmac-sha256",headers="(request-target) host date content-type content-length",signature="a9BEW7NOlLWs7hpUV26EswbVUjHt/pjo57/Qfkz8Tbw="

  • Thank you very much. It works.