I try to test our REST/JSON (POST) services,where queryparametres are in content as json and the answer in contet is also as json.</p>

This is my testClient:

Class XXX.RESTClient Extends %RegisteredObject
{
ClassMethod TestXXX()
{
#dim tRequest As %Net.HttpRequest = ##class(%Net.HttpRequest).%New()

set tRequest.ContentType="application/json"
json=##class(%ZEN.proxyObject).%New()
json.x="XXX" 
##class(%ZEN.Auxiliary.jsonProvider).%WriteJSONStreamFromObject(.jsonStream,json)
set jsonText=jsonStream.Read(jsonStream.Size)
set tSC=tRequest.EntityBody.Write(jsonText)

set tSC = tRequest.Post("http://server:57776/csp/XXX/testXXX")

do tRequest.HttpResponse.OutputToDevice()
}

}

in dispatchClass:

ClassMethod testXXX() As %Status
{
#dim tStatus As %Status = $$$OK
#dim parObj As %DynamicAbstractObject = {}
#dim dynObj As %DynamicAbstractObject = {}
set $ZT="ERROR"
goto:'..%securityCheck(.tStatus,parObj) DONE

DONE ;
do ..%logout(.tStatus,dynObj)
quit tStatus
ERROR ;
set tStatus = $$$ERROR($$$CacheError,$ZE)
do BACK^%ETN
goto DONE
}
 </p>

ClassMethod %securityCheck(ByRef pStatus As %Status, parObj As %DynamicAbstractObject) As %Boolean
{
set pStatus = $$$OK
set $ZT="ERROR"

#dim %request As %CSP.Request

if %request.ContentType'=..#CONTENTTYPE {
set pStatus=$$$ERROR($$$GeneralError,"Wrong ContentType")
goto DONE
}
if '$IsObject(%request.Content) {
set pStatus=$$$ERROR($$$GeneralError,"No Content")
goto DONE
}</p>

/*
//THIS WRITES OK { "x":"XXX"}

do %request.Content.Rewind()
Set fstream=##class(%FileBinaryStream).%New()
do fstream.LinkToFile("content.txt")
do %request.Content.Rewind()
do fstream.CopyFrom(%request.Content)
do fstream.%Save()
AND THIS IS OK (the same):

do %request.Content.OutputToDevice()

*/
//Content is type of %CSP.BinaryStream
do %request.Content.Rewind()
set parObj = {}.%FromJSON(%request.Content.ReadLineIntoStream()) //<== THERE I GET THE ERROR
do %request.Content.Rewind()

***

goto DONE 
}

DONE ;
quit $$$ISOK(pStatus)
ERROR ;
set pStatus = $$$ERROR($$$CacheError,$ZE)
do BACK^%ETN
goto DONE
}

THIS IS THE ERROR

{"status":{"koodi":"0","selite":"Cache error: <THROW>%FromJSON+37^%Library.DynamicAbstractObject.1 *%Exception.General Premature end of data 12 Line 1 Offset 1 "}}{
        "errors":[ {
                        "code":5002,
                        "domain":"%ObjectErrors",
                        "error":"ERROR #5002: Cache error: <THROW>%FromJSON+37^%Library.DynamicAbstractObject.1 *%Exception.General Premature end of data 12 Line 1 Offset 1 ",
                        "id":"CacheError",
                        "params":["<THROW>%FromJSON+37^%Library.DynamicAbstractObject.1 *%Exception.General Premature end of data 12 Line 1 Offset 1 "
                        ]
                }
        ],
        "summary":"ERROR #5002: Cache error: <THROW>%FromJSON+37^%Library.DynamicAbstractObject.1 *%Exception.General Premature end of data 12 Line 1 Offset 1 "
}

WRC told Content is type on %CSP.Stream, not binaryStream. True, if you read %CSP.request, but this works in another application. And in errorlog Content is told to be binary stream.

+----------------- swizzled references ---------------
|          i%Content = "3@%CSP.BinaryStream"
|          r%Content = ""
+-----------------------------------------------------
 

What is my error? How should I change this? Some changes to testClient, not service itself?

</body></html>