i have to pass parameter as string. So i have made above parameter as string using chr(34). (is it good idea or there is any function for it?)
and it converted as string . then my url.AsyncPostFromString(param) post http request fine.
Even i got msg.GetInt() = 1 means transfer complete.
But i am getting response code from server as 400. (if i am taking
url.AddHeader("Content-Type","application/json"
)
if i am not taking AddHeader then response code coming 415.
i think problem is : parmeter converted in string format using chr(34). is there is any function for it?
help me to solve this issue.
Chr(34) is a quote character. I’m not sure what you mean when you say you changed a string into a string using Chr(34). To pass any string as a URL parameter you should encode it using roUrlTransfer.Escape() or something similar.
Oh when you said it was JSON data I thought you meant you had already converted it to a JSON string. This was already discussed in your other thread: viewtopic.php?f=34&t=89668. You should use FormatJSON to convert the AA to a string, and then roUrlTransfer.Escape to escape the metacharacters so that it can be passed in a URL. Note however that the server must be set up to expect the data in JSON format. If it’s expecting some other format then you need to convert to that format rather than JSON.
Can you post a complete function that exhibits the problem and the exact error message? I don’t see any way that the line you posted can produce a syntax error message.
“cpjamloki” wrote:
I have to post http request to server,but i have json data as a parameter like:
…
You can either start with a valid JSON value in a string, that you got from a server or built yourself, or you can start with an object representation, i.e. an associative array.
If you are starting with a JSON string value, but you want to change some values or otherwise manipulate it, you can first convert it to an object representation using ParseJSON.
Then, when the object representation is the way you want, you can convert it to a JSON string value using FormatJSON.
You should sent that string value as the parameter to your AsyncPostFromString call.
(I doubt you want to do any escaping at that point, as the POST is sending data, not a URL).
Example:
s = "{'a':'z','b':2}"
s = s.Replace("'", chr(34))
print s
REM {"a":"z","b":2}
o = ParseJSON(s)
o.b = 3
s = FormatJSON(o)
print s
REM {"a":"z","b":3}
“cpjamloki” wrote:
please Roku confirm that: is Roku support to post json data?
Sure, you can post JSON data. From your initial post here, you already know how to POST using AsyncPostFromString.
If you are setting the Content-Type header appropriately, as you indicated, and have verified that the string you are posting is valid JSON, then perhaps you need to diagnose from the service that you are sending to that the data contents conform to the protocol it expects.
---->it gives me syntax error in param why? what is wrong in param here.?
if i am not wrong param should be in completely string form here.
According to you> you can post JSON data using AsyncPostFromString(string)but it does’t allow me post my json data here as a parameter. giving syntax error in param.
and Please share an example where we are sending JSON as part of a post request.
Since you won’t post the code and the error message as I previously asked, we can only guess, but it seems that you are passing an AssociativeArray to AsyncPostFromString. It needs to be a string, not an AA, as you yourself said in your last post. An AA is not a string. This code should work. Note that the first line is necessary since “null” is not a reserved word in Brightscript, as RokuKC already told you earlier.