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"
s json=##class(%ZEN.proxyObject).%New()
s json.x="XXX"
d ##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:
{
#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>
{
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>