JSONWEBSRV.sqlrpgle

Discussions relating to the ScottKlement.com port of the open source YAJL JSON Reader/Generator. This includes the YAJL tool as well as the YAJLR4, YAJLGEN, YAJLINTO and YAJLDTAGEN add-ons from ScottKlement.com. http://www.scottklement.com/yajl/
freelance
Posts: 28
Joined: Wed Feb 21, 2024 2:38 pm

JSONWEBSRV.sqlrpgle

Post by freelance »

Hi Scott,

On running this program with the website, the pointer goes here - on-error; and program ends.
So, please advise. -Parag

Code: Select all

50        /free                                     
51         exec SQL set option naming=*SYS;         
52         *inlr = *on;                             
53                                                  
54         monitor;                                 
55            uri = %str(getenv('www.tiktok.com')); 
56         on-error;                                                  <-- here                 
57            success = *off;                       
58            errmsg = 'invalid URI!';              
59            exsr JSON_Start;                      
60            exsr JSON_Finish;                     
61            exsr JSON_Save;                       
62            return;
jonboy49
Posts: 204
Joined: Wed Jul 28, 2021 8:18 pm

Re: JSONWEBSRV.sqlrpgle

Post by jonboy49 »

You may have misunderstood the use of getenv(). The text 'REQUEST_URI' is a literal and asks that the URI from which the request originated be retrieved. You cannot use it to specify an arbitrary URI (in your case www.tiktok.com) - it wouldn't know what to do with it.

getenv is used to retrieve information about the message received from the program's caller. For example CONTENT_LENGTH and
CONTENT_TYPE. There are a fixed number of options including what was the URI that caused the program to be initiated.

In the case of Scott's sample program JSONWEBSRV the URI is being retrieved so that the code can extract the customer, start date and end date from the URI. The program was called by the Apache web server in response to a request in the form http://whatever/rest/jsonwebsrv/495/20100901/20100930 where "whatever" is the name of the server hosting the service. This is spelled out in the program's comments.

Since you have clearly modified Scott's code, it would be a good idea to tell us what exactly you are trying to do - then we can make suggestions.
freelance
Posts: 28
Joined: Wed Feb 21, 2024 2:38 pm

Re: JSONWEBSRV.sqlrpgle

Post by freelance »

Hi there,

We are trying to post our AS/400 IFS file data to the website tiktok.com which may not be the exact link. But, all the same, we wanted to see what kind of response we getting. In our case, pointer moved to on-error and the statement thereafter errmsg = 'invalid URI!'; is what we got.

It passed thru -
httpStatus = 500

EVAL bigCharVar
BIGCHARVAR =
....5...10...15...20...25...30...35...40...45...50...55...60
1 '{"success":false,"errmsg":"invalid URI!","list":[]} '
61 ' '
jonboy49
Posts: 204
Joined: Wed Jul 28, 2021 8:18 pm

Re: JSONWEBSRV.sqlrpgle

Post by jonboy49 »

Which is fine - but why did you think that JSONWEBSRV would be a useful reference? As I tried to explain it is an example of _supplying_ a web service. Not _consumming_ one which is what you are trying to do.

Normally I would use HTTPAPI to send the file (Scott has examples in LIBHTTP of file upload) and there are topics in that section of the forum (https://www.scottklement.com/forums/viewforum.php?f=2) on the topic.

HTTPAPI will give you the tiktok response in a variable. You then parse that variable either by using DATA-INTO with YAJLINTO or by using the raw YAJL APIs. Normally getenv would never be used in this situation.

If you still have issues after reading this please post a bit more code showing how you post the file to tiktok and how you are attempting to process the returned value.

P.S. The error message you are showing appears to indicate that you are passing an invalid URI to the server. Depending on the server, I have seen cases where this response can mean almost anything from invalid authentication credentials to passing a character string where the server is expecting a number.
freelance
Posts: 28
Joined: Wed Feb 21, 2024 2:38 pm

Re: JSONWEBSRV.sqlrpgle

Post by freelance »

Hi,

I do agree that we need to start the 'apache server'; to enable our IBMi system to communicate with the internet, which we will.

But wanted to confirm if we need to configure our /www/apachedft/conf/httpd.conf as well ?
But as you know that we are using the binding dir YAJL in our pgm. So, is this file present and already configured; is my question ..?

Do let us know .. Thanks
jonboy49
Posts: 204
Joined: Wed Jul 28, 2021 8:18 pm

Re: JSONWEBSRV.sqlrpgle

Post by jonboy49 »

Why do you think you need Apache to be running? As I pointed out earlier, Scott's JSONWEBSRV example is a SERVER application - and it needs Apache or NGINX to be running. IF you were trying to run Scott's program they Yes - Apache would need to be configured and running.

But if you are UPLOADING files to tiktok then you are normally acting as a CLIENT not a server. In which case you don't need Apache at all.

Questions for you:

1) Are actually using Tiktok?
2) If not who or what is requesting the upload?
3) If tiktok which API are you using the direct post or video upload ?

I'm just trying to get us all on the same page here.

Just tell us what you are trying to do and why.
freelance
Posts: 28
Joined: Wed Feb 21, 2024 2:38 pm

Re: JSONWEBSRV.sqlrpgle

Post by freelance »

Yes, we are trying to upload our product data onto the tiktok in bulk qnty i.e. my pgm should send out the IFS .json file to tiktok seller center website.
Next, we will upload .jpg/s to that website via a diff tool.
freelance
Posts: 28
Joined: Wed Feb 21, 2024 2:38 pm

WJSON2WEB.sqlrpgle (diff pgm)

Post by freelance »

I have yet another query on an article titled – ‘Building JSON with RPG and YAJL and writing to Standard Output’

Now, at the bottom of this article, we have ‘The Results’ which brings up you bvdemo.bvtools.com website displaying the resultant data.

Next, on the top of the article, we have ‘The HTTP Server Configuration’ contains the stmts listed below it.

So question is that, we don’t see this website in the config file. But did find /www/bvsdemo/html.

But, they don’t match. So then, where is this .com link coming from ?

Trying to understand this, if you could explain.

Thanks
Last edited by freelance on Fri Feb 23, 2024 8:45 pm, edited 1 time in total.
freelance
Posts: 28
Joined: Wed Feb 21, 2024 2:38 pm

WJSON2WEB.sqlrpgle (diff pgm)

Post by freelance »

We have, /cgi-bin/(.*)

And the output link is bvsdemo.bvstools.com/cgi-bin/json1

So, need to clarify how this link ending in json1 gets triggered ?
jonboy49
Posts: 204
Joined: Wed Jul 28, 2021 8:18 pm

Re: JSONWEBSRV.sqlrpgle

Post by jonboy49 »

freelance wrote: Fri Feb 23, 2024 6:58 pm Yes, we are trying to upload our product data onto the tiktok in bulk qnty i.e. my pgm should send out the IFS .json file to tiktok seller center website.
Next, we will upload .jpg/s to that website via a diff tool.
OK - I'm going to try one more time.

We can't help you if you don't give us more specific information.

I have looked at TikTok's web site and one of the APIs they offer for advertisers is the image upload one described here: https://business-api.tiktok.com/portal/ ... 7433456642 - Is that what you are using? If not then which API ? Give me a reference.

If this is the API you are using (or a similar one) I note that one of the options it offers is for you to supply a URL for the image you want uploaded. If this is what you are talking about then you would have to map Apache to the specific directory you want to upload files from.

Is this what you are trying to do?
Locked