NetTalk Central
NetTalk Web Server => Web Server - Ask For Help => Topic started by: Alberto on May 23, 2015, 06:28:59 AM
-
Hi
I use xFiles to make an XML I need to serve.
I use a NetWebSource proc to do it.
The xml is ok but when you get the page with a browser, the NteTalk server adds 2 lines at the end of the xml like:
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <file>
> <item>
> <STOCK>AAPL</STOCK>
> <CURRENCY>PES</CURRENCY>
> </item>
> </file>
> <?xml version="1.0" encoding="iso-8859-1"?>
> <ajax-response></ajax-response>
My Code: (vCotiza is a view)
open(vCotiza)
set(vCotiza)
x.save(vCotiza)
packet.Append(x.XmlData)
! if you look at the packet.getValue() it is OK, without the last two lines
p_web.ParseHTML(packet,1,0,NET:NoHeader)
You can test it browsing the url:
http://200.68.94.242/xmloc?F=Sxml&S=L&M=PES&Z=1&ES=APBR,ERAR (http://200.68.94.242/xmloc?F=Sxml&S=L&M=PES&Z=1&ES=APBR,ERAR)
How can I solve it?
Thanks
-
Try moving your code into just a normal source procedure not a websource procedure.
-
Thanks Kevin,
I've donde this but now the proc is unaccessible trought a browser
The page cannot be found
The page you are looking for might have been removed, had its name changed, or is temporarily unavailable.
It seams tha,t if the proc is not a NetWebSource, the Webhandler does not recognice it.
TThen, I've tride to call the source proc from the old NetWebSource with:
CODE
xmloc(p_web) !call the source proc
RETURN !return doing nothing with the NetWebSource
omit('!***')
and the result is the same, NT adds the two lines at the bottom.
I have an old proc that do not use xfiles, it just make a page with data separated by <13,10>, and also in this case NT adds that two lines...
208.150
0
22/05/2015
#0
</data>
<?xml version="1.0" encoding="iso-8859-1"?>
<ajax-response></ajax-response>
You can test it browsing the url:
http://200.68.94.242/xoc?F=S&S=L&M=PES&Z=1 (http://200.68.94.242/xoc?F=S&S=L&M=PES&Z=1)
Any Idea?
-
what embed do you have this in? I recommend
"Processed Code"
>> x.save(vCotiza)
I presume x is an xFiles object?
if so
x.OmitXMLHeader = true
cheers
Bruce
-
Yes Bruce...
ProcecedCode:
My Code:
(vCotiza is a view)
(x is a xFiles object)
open(vCotiza)
set(vCotiza)
x.save(vCotiza)
packet.Append(x.XmlData)
! if you look at the packet.getValue() it is OK, without the last two lines
p_web.ParseHTML(packet,1,0,NET:NoHeader)
If I use x.OmitXmlHeader it is worst, the page does not have the xml header and the two lines still added at the bottom.
This two lines are added at the bottom by NT
<?xml version="1.0" encoding="iso-8859-1"?>
<ajax-response></ajax-response>
May be trought the p_web.ParseHTML(packet,1,0,NET:NoHeader) proc???
Check this, with a xml made by xFiles:
http://200.68.94.242/xmloc?F=Sxml&S=L&M=PES&Z=1&ES=APBR,ERAR (http://200.68.94.242/xmloc?F=Sxml&S=L&M=PES&Z=1&ES=APBR,ERAR)
and this, with plain data separated by 13,10:
http://200.68.94.242/xoc?F=S&S=L&M=PES&Z=1 (http://200.68.94.242/xoc?F=S&S=L&M=PES&Z=1)
in both cases NT add this two lines.
Thanks
-
I´ve added two messages in the ParseHtml in the Webhandler proc like:
p_web.ParseHTML PROCEDURE(StringTheory p_Buffer,long p_DataStart=1,long p_DataEnd=0,Byte p_Header=NET:SendHeader)
CODE
message(p_buffer.getvalue())
PARENT.ParseHTML(p_Buffer,p_DataStart,p_DataEnd,p_Header)
message(p_buffer.getvalue())
When I fetch the page I get 4 messages
The first 2 before and after the PARENT.ParseHTML are ok withot the last two lines
but...
Then comes two more message with exactly this two lines!!!
Its like after my proc calls the ParseHTML, then another proc calll it adding the two lines.
Hope this helps
-
If I add code to the Webhandler like:
p_web.ParseHTML PROCEDURE(StringTheory p_Buffer,long p_DataStart=1,long p_DataEnd=0,Byte p_Header=NET:SendHeader)
CODE
if instring('<ajax-response></ajax-response>',p_buffer.getvalue(),1,1)=0
PARENT.ParseHTML(p_Buffer,p_DataStart,p_DataEnd,p_Header)
end
All is OK.
Hope this helps.
-
Hi Alberto,
I think you are doing this very wrong - and certainly your fix in WebHandler will probably cause problems elsewhere.
I recommend you post an example app of your original problem so I can see what you are doing, and give you the correct fix.
cheers
Bruce
-
ok Bruce,
I attached a zip with the sln, app, dct, etc for you tu compile and test.
I remove the WebHandler change.
The offending proc is "xmloc"
Just fetch:
http://yourIP/xmloc?F=Sxml&S=L&M=PES&Z=1&ES=APBR,ERAR
Thank you very much.
[attachment deleted by admin]
-
hi Alberto,
1) first thing - this should be in a NetWebPage, not a netWebSource. A netWebSource is designed to be embedded on a page, and you are calling it as a URL. So move it to a NetWebPage
2) Set the NetWebPage to "Page Type: XML" and turn off "Add <?xml Version..."
3) embed your code in the NetWebPahe in the embed point between
do Header
and
do Footer
4) remove the RETURN from your code.
5) remove the call to p_web.ParseHTML(packet,1,0,NET:NoHeader) from your code.
cheers
Bruce
-
Thanks Bruce, that did the trick.