Strange, occasional, aborts of html response stream...
Apex 4.1 with Apache, mod_plsql and gzip compression.
This application is used by 2000+ users in Netherlands and Belgium.
We have a few Belgium customers with the following issue (confirmed at one site, but I suspect the others have the same issue).
Application works fine most of the time, but occasionally the html that is produced by the http-get call of 'f', is:
a) streamed back to the browser in 'chunks', with large delays (> 60 seconds) in between.
b) sometimes even never completes (in streaming all html back to the browser).
We've observed this behavior by monitoring what's going on using Chrome's ctrl-shift-i, monitor network, feature.
Also used WireShark to see if something unusual was happening: but it was not. No dropped packets, resends, or strange http errors.
When we, in case this is happening, abort the page-request via the browser, and re-submit the request (by requesting the same Apex url again), it then always executes and completes normally.
My main question now is: how can we diagnose this issue further?
(I probably provided way too little information here, so feel free to post further clarification requests.)
ok,
I removed the html tags in the jsp-file and now acrobat reader does start.
but it says the pdf file is damaged and cannot be repaired ...
any ideas?
gr
Steppe
Similar Messages
-
Multiple response streams ? HTML and binary ?
Hello,
Is it possible for a Servlet to create two responses or two output streams, with one as HTML and the other as binary?
The code below only seems to send the first (HTML) section and seems to ignore the second (binary) section ?
Thanks alot !!!
James
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class MinimalBinaryStream extends HttpServlet
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
doGet(request, response);
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/*----------Below: Send HTML Response----------*/
response.setContentType("text/html");
ServletOutputStream out = response.getOutputStream();
out.print("<h3>Text message to say binary file is on its way</h3>");
out.flush();
out.close();
/*----------Below: Send Binary Response----------*/
response.reset();
response.setContentType("application/octet-stream");
response.setContentLength(3);
out = response.getOutputStream();
out.write(0x31);
out.write(0x32);
out.write(0x33);
out.flush();
out.close();
}The servlet validates the serial number. If the
serial number submitted is invalid, then the servlet
simply sends an HTML message to the client saying
"Invalid serial number, please try again, etc,
etc".
If the serial number is valid, then the server
encrypts it into a ZIP file and sends the ZIP file to
the client. (This part is working perfectly by the
way.)It sounds like you're not really mixing the two types of data in a single response... You're doing one or the other depending upon the value of some data the client has sent to the server
I wouldn't use the sendRedirect method off of the response. That causes a new get request to be issued from the client which is not necessary. I'd use the RequestDispatcher, preserving the initial request and forwarding both the request and response to another resource on the server. The client is unaware of any of it.
if ( serial number valid ) {
// encrypt to ZIP
// send zip to client on response...
} else {
ResquestDispatcher dispatcher = request.getRequestDispatcher( "redirect.html" );
dispatcher.forward( request, response );
}http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/RequestDispatcher.html
What would be really nice, is if the servlet could
also send an HTML message saying "Thanks for your
serial number, here is your licence.ZIP, etc,
etc".For this, maybe you could create a jsp page with a link that pointed to the ZIP file on the server. You would define the name dynamically, and attach the name to the request via setAttribute. Then use that same value in the href value on the jsp page. via request.getAttribute The jsp page would contain the message in html and the client would obtain the zip from the link. And use the RequestDispatcher to forward to the jsp page from the servlet. Place the jsp inside /WEB-INF so that by itself it is not accessble to the client. Only the server code can get to it. -
Read values from html response
Hi,
I am trying to make a call to an API using UTL_HTTP POST method over SSL and read the response html page and extract the values from the reponse.
I am able to call and get a response back in html format. I have stored the html response in a clob variable.
Now i want to parse this html and extract values from the form input items and send them out through OUT parameters.
For example, from below reponse i want to extract the value '1111d7nhcwse30wq' from 'I4GO_UNIQUEID'
Can anyone help me with the code to parse this html response and extract the values.
Any help is greatly appreciated.
Thanks
Sharath
sample Code:
PROCEDURE get_token (
p_requesterreference IN VARCHAR2,
p_cardnumber IN VARCHAR2,
p_cardtype IN VARCHAR2,
p_cardholdername IN VARCHAR2,
p_expirationmonth IN VARCHAR2,
p_expirationyear IN VARCHAR2,
p_streetaddress IN VARCHAR2,
p_postalcode IN VARCHAR2,
p_cvv2code IN VARCHAR2,
po_uniqueid OUT VARCHAR2,
po_errorindicator OUT VARCHAR2,
po_primaryerrorcode OUT VARCHAR2,
po_response OUT VARCHAR2,
po_status_code OUT VARCHAR2,
po_reason_phrase OUT VARCHAR2
IS
v_url VARCHAR2 (200);
v_url_params VARCHAR2 (32767);
v_resp_str VARCHAR2 (32767);
l_http_req UTL_HTTP.req;
l_http_resp UTL_HTTP.resp;
v_requesterreference VARCHAR2 (12) := p_requesterreference;
v_i4go_cardnumber VARCHAR2 (32) := p_cardnumber;
v_i4go_streetaddress VARCHAR2 (30) := p_streetaddress;
v_i4go_postalcode VARCHAR2 (9) := p_postalcode;
v_i4go_expirationmonth VARCHAR2 (2) := p_expirationmonth; -- MM format
v_i4go_expirationyear VARCHAR2 (2) := p_expirationyear; -- yy format
v_i4go_cvv2code VARCHAR2 (3) := p_cvv2code;
v_name VARCHAR2 (256);
v_value VARCHAR2 (1024);
l_clob CLOB;
pv_amp CONSTANT CHAR (1) := CHR (38);
CURSOR setup_cur
IS
SELECT interface_id, interface_name, interface_url, account_id, site_id
FROM rsv.shift4_setup
WHERE interface_name = 'I4GO';
v_setup_rec setup_cur%ROWTYPE;
BEGIN
OPEN setup_cur;
FETCH setup_cur
INTO v_setup_rec;
CLOSE setup_cur;
v_url := 'https://certify.i4go.com//index.cfm?fuseaction=account.PostCardEntry';
v_url_params :=
pv_amp
|| 'i4GO_AccountID='
|| v_setup_rec.account_id
|| pv_amp
|| 'i4Go_SiteID='
|| v_setup_rec.site_id
|| pv_amp
|| 'i4Go_CardNumber='
|| v_i4go_cardnumber
|| pv_amp
|| 'i4Go_ExpirationMonth='
|| v_i4go_expirationmonth
|| pv_amp
|| 'i4Go_ExpirationYear='
|| v_i4go_expirationyear
|| pv_amp
|| 'i4Go_CVV2Code='
|| v_i4go_cvv2code
|| pv_amp
|| 'i4Go_PostalCode='
|| v_i4go_postalcode;
-- begin request using POST method
UTL_HTTP.set_response_error_check (FALSE);
UTL_HTTP.set_transfer_timeout (180);
UTL_HTTP.set_wallet ('file:/etc/ORACLE/WALLETS/oracle', 'welcome1');
l_http_req := UTL_HTTP.begin_request (v_url, 'POST');
UTL_HTTP.set_header (l_http_req, 'User-Agent', 'Mozilla/4.0');
UTL_HTTP.set_header (l_http_req, 'Content-Type', 'application/x-www-form-urlencoded');
UTL_HTTP.set_header (l_http_req, 'content-length', LENGTH (v_url_params));
UTL_HTTP.write_text (l_http_req, v_url_params);
-- get response
l_http_resp := UTL_HTTP.get_response (l_http_req);
po_status_code := l_http_resp.status_code;
po_reason_phrase := l_http_resp.reason_phrase;
-- read response into a clob
DBMS_LOB.createtemporary (l_clob, FALSE);
BEGIN
LOOP
UTL_HTTP.read_text (l_http_resp, v_resp_str, 32767);
DBMS_LOB.writeappend (l_clob, LENGTH (v_resp_str), v_resp_str);
END LOOP;
EXCEPTION
WHEN UTL_HTTP.end_of_body
THEN
-- end response
UTL_HTTP.end_response (l_http_resp);
END;
-- Fre resources
DBMS_LOB.freetemporary (l_clob);
EXCEPTION
WHEN OTHERS
THEN
DBMS_LOB.freetemporary (l_clob);
DBMS_OUTPUT.put_line (UTL_HTTP.get_detailed_sqlerrm);
RAISE;
END;
sample response:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Return With Payment Token</title>
<script src="js/jquery-1.6.4.min.js" type="text/javascript"></script>
<script type="text/javascript"><!--
picSpinner= new Image(40,40);
picSpinner.src="images/loading040.gif";
bodyOnLoad = function() {
$("#noScriptDiv").hide();
$("#scriptDiv").show();
$("#i4GoMainForm").submit();
//--></script>
</head>
<body onload="bodyOnLoad();">
<form name="i4GoMainForm" id="i4GoMainForm" action="http://google.com" method="POST" onsubmit="$('#i4Go_submit').attr('disabled','disabled');">
<input name="I4GO_RESPONSE" type="hidden" value="SUCCESS" />
<input name="I4GO_RESPONSECODE" type="hidden" value="1" />
<input name="I4GO_CARDTYPE" type="hidden" value="VS" />
<input name="I4GO_UNIQUEID" type="hidden" value="1111d7nhcwse30wq" />
<input name="I4GO_EXPIRATIONMONTH" type="hidden" value="12" />
<input name="I4GO_EXPIRATIONYEAR" type="hidden" value="2012" />
<input name="I4GO_CARDHOLDERNAME" type="hidden" value="" />
<input name="I4GO_STREETADDRESS" type="hidden" value="" />
<input name="I4GO_POSTALCODE" type="hidden" value="65000" />
<div id="scriptDiv" style="font-family:Arial, Helvetica, sans-serif;font-size:18px;visibility:hidden;">
<img src="images/loading040.gif" alt="Spinner..." /> Loading...
</div>
<div id="noScriptDiv" style="font-family:Arial, Helvetica, sans-serif;">
<noscript>
<h1>Statement of Tokenization</h1>
<p>The payment information you have submitted has been securely stored in the Shift4 PCI-DSS certified data center and a token representing this information will be sent to the merchant for processing. Below is the information that will be returning to the originating merchant:</p>
<ul>
<li>Response: <strong>SUCCESS</strong></li>
<li>Response Code: <strong>1</strong></li>
<li>Card Type: <strong>VS</strong></li>
<li>Token: <strong>1111d7nhcwse30wq</strong></li>
</ul>
</noscript>
<input type="submit" name="i4Go_submit" id="i4Go_submit" value="Continue" />
</div>
</form>
</body>
</html>
Edited by: sgudipat on Apr 24, 2012 1:20 PMHere is working example for your HTML using xpath to extract values from html
You can store your html response in clob variable and then extract the value with xpath
declare
l_clob clob;
l_value varchar2(100);
l_xml xmltype;
begin
l_clob :='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Return With Payment Token</title>
<script src="js/jquery-1.6.4.min.js" type="text/javascript"></script>
<script type="text/javascript"><!--
picSpinner= new Image(40,40);
picSpinner.src="images/loading040.gif";
bodyOnLoad = function() {
$("#noScriptDiv").hide();
$("#scriptDiv").show();
$("#i4GoMainForm").submit();
//--></script>
</head>
<body onload="bodyOnLoad();">
<form name="i4GoMainForm" id="i4GoMainForm" action="http://google.com" method="POST" onsubmit="$(''#i4Go_submit'').attr(''disabled'',''disabled'');">
<input name="I4GO_RESPONSE" type="hidden" value="SUCCESS" />
<input name="I4GO_RESPONSECODE" type="hidden" value="1" />
<input name="I4GO_CARDTYPE" type="hidden" value="VS" />
<input name="I4GO_UNIQUEID" type="hidden" value="1111d7nhcwse30wq" />
<input name="I4GO_EXPIRATIONMONTH" type="hidden" value="12" />
<input name="I4GO_EXPIRATIONYEAR" type="hidden" value="2012" />
<input name="I4GO_CARDHOLDERNAME" type="hidden" value="" />
<input name="I4GO_STREETADDRESS" type="hidden" value="" />
<input name="I4GO_POSTALCODE" type="hidden" value="65000" />
<img src="images/loading040.gif" alt="Spinner..." /> Loading...
<noscript>
Statement of Tokenization
The payment information you have submitted has been securely stored in the Shift4 PCI-DSS certified data center and a token representing this information will be sent to the merchant for processing. Below is the information that will be returning to the originating merchant:
Response: SUCCESS
Response Code: 1
Card Type: VS
Token: 1111d7nhcwse30wq
</noscript>
<input type="submit" name="i4Go_submit" id="i4Go_submit" value="Continue" />
</form>
</body>
</html>';
execute immediate 'alter session set events =''31156 trace name context forever, level 2''';
l_xml := xmltype(l_clob);
execute immediate 'alter session set events =''31156 trace name context off''';
select extractvalue( l_xml
, '/html/body/form/input[@name="I4GO_CARDTYPE"]/@value'
, 'xmlns="http://www.w3.org/1999/xhtml"' )
into l_value
from dual;
dbms_output.put_line(l_value);
end;
Problem when parsing html with xpath and xmltype
Edited by: peterv6i.blogspot.com on Apr 26, 2012 9:38 AM -
SAP Webservice returning HTML response instead of SOAP
<br>Hi,
I want to call a webservice created from an SAP function in SAP 6.40.
When I test this webservice with the TCPGateway tool, if no application exception occured, I receive the correct response : the <b>SOAP</b> response message:
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Body>
<n0:ZWsCreateWagonResponse xmlns:n0="urn:sap-com:document:sap:soap:functions:mc-style">
</n0:ZWsCreateWagonResponse>
</soap-env:Body>
</soap-env:Envelope>
<br>But if an application exception occured in the web service, I receive the response message in <b>HTML</b> :
500 Internal Server Error
Error when processing your request
What has happened?
The URL .../sap/bc/srt/rfc/sap/z_ws_create_wagon was not called due to an error.
The following error text was processed in the system LSD : Exception condition "ALREADY_EXISTS" raised.
The termination type was: RABAX_STATE
The ABAP call stack was:
Function: Z_WS_CREATE_WAGON of program SAPLZ_WS_HU
Form: EXECUTE of program CL_SRG_RFC_PROXY_CONTEXT ---- CP
Form: IF_SOAP_APPLICATION_RT EXEC_PROCESSING of program CL_SOAP_APPLICATION_RFC ---- CP
Form: EXEC_PROCESSING of program CL_SOAP_RUNTIME_SERVER ---- CP
Form: EXECUTE_PROCESSING of program CL_SOAP_RUNTIME_ROOT ---- CP
Form: EXECUTE_PROCESSING of program CL_SOAP_RUNTIME_SERVER ---- CP
Form: EXEC_PROCESSING of program CL_SOAP_TRANSPORT_EXTENSN_ROOTCP
Form: EXEC_PROCESSING of program CL_SOAP_HTTP_EXTENSION ---- CP
Form: HANDLE_REQUEST of program CL_SOAP_TRANSPORT_EXTENSN_ROOTCP
Form: HANDLE_REQUEST of program CL_SOAP_HTTP_EXTENSION ---- CP
<br>When I call the web service in XI with a SOAP Receiver Adapter, I get the following exception (in case of application exception but also when no application exception occured) :
com.sap.aii.af.ra.ms.api.DeliveryException:
<br>invalid content type for SOAP: TEXT/HTML
So, my questions:
- how to receive a SOAP response instead of an HTML response in case of application exception in the web service ?
- why do I get an Invalid content type exception when the response is well a SOAP response ?
<br><br>Thanks in advance,
LaurenceThanks for your response, Sandro.
The webservice which I use has been modified. Now if it throws an exception, I receive well a SOAP message :
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Body>
<soap-env:Fault>
<faultcode>soap-env:Client</faultcode>
<faultstring xml:lang="en">ALREADY_EXISTS</faultstring>
<detail>
<n0:Z_WS_CREATE_WAGON.Exception xmlns:n0="urn:sap-com:document:sap:rfc:functions">
<Name>ALREADY_EXISTS</Name>
<Text>Virus scan profile /SIHTTP/HTTP_UPLOAD is not active</Text>
<Message>
<ID>VSCAN</ID>
<Number>033</Number>
</Message>
</n0:Z_WS_CREATE_WAGON.Exception>
</detail>
</soap-env:Fault>
</soap-env:Body>
</soap-env:Envelope>
About the exception managing :<br>
- In my integration process, I include the send step in a block, with property <i>Exceptions</i> =
ALREADY_EXISTS
- In the send step, in property <i>Exceptions</i>, I add <i>System Error</i>
ALREADY_EXISTS
- I insert an <i>Exception Branch</i> in the new block, <i>Exception Handler</i>
ALREADY_EXISTS
Is that correct?
Do I need to use Fault messages?
And how do I get the error message ?
<br>In transaction ST22, I have no dump.
<br>If it is a problem of exception managing, why do I get also the error (<i>com.sap.aii.af.ra.ms.api.DeliveryException: invalid content type for SOAP: TEXT/HTML</i>) when all is right in the web service call ?
Regards,
Laurence -
Servlet with 2 Response Streams
I want to create a Servlet with 2 response streams. I need to use 1 response Stream to send Continuous Updates received on the server
and the other response Stream would be used to send Heartbeats to the Client. I tried to create the Servlet but the response I create to send the continuous data just stops sending data to the Client after many attempts. In this attached Servlet, The response for continuous data stopped after 150 refreshes.
Please let me know how to fix the issue. I tried reset() too but does not seem to work. Will very much appreciate any help.
package com.XX;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TestServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
public static int count = 0;
private TestSave testSave = null;
private HttpServletResponse resp = null;
public void init(){
testSave = new TestSave();
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
count ++;
if(testSave == null){
System.out.println(" test save = null");
return;
if(testSave.getRes()==null){
System.out.println(" test save resp is null");
testSave.setRes(res);
res.getWriter().println(" Initial Daily count Response ");
}else{
res.getWriter().println(" Daily response " + count);
//res.getWriter().close();
System.out.println(" test save resp is not null");
resp = testSave.getRes();
String data = "Count is "+count;
System.out.println(" Writing response " + resp);
System.out.println(" Writing Data " + data);
System.out.println(" Response committed 1 - " + count + " : " + resp.isCommitted());
resp.getWriter().println(data);
System.out.println(" Response committed 2 - " + count + " : " + resp.isCommitted());
System.out.println(" Daily Response committed ??? " + res.isCommitted());
protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
doGet(req,res);
}The TestSave code.
import javax.servlet.http.HttpServletResponse;
public class TestSave {
HttpServletResponse res;
public HttpServletResponse getRes() {
return res;
public void setRes(HttpServletResponse res) {
this.res = res;
} -
HTML response for HTTP adapter
Hi All,
I have a BPM scenario in which I have to send PO idoc to third party system using HTTP adapter and after I receive a response message from the system (it is synchronous process), I have to update PO idoc status using SYSTAT idoc.
The problem is - I have to send XML message using HTTP adapter but the response message I receive is HTML.
When I test this scenario, I can see the HTML response message from third party system in SXMB_MONI but it is not transfered to my message interface. I have a transformation step in which I map this response message to SYSTAT IDoc structure but when I check the workflow container for this transformation step in SXMB_MONI_BPE, the paylod for the message interface is empty.
Am I missing something?
What can be done to get this HML response into the message interface?
Any help will be appreciated.
Thanks,
Rahul.Hi,
The adapter configuration is fine. And there is no error in SXMB_MONI.
Actually the response message is from Oracle Gateway of the receiver system and it includes status code and status text. It is in HTML format.
I can see this HTML in SXMB_MONI log but it is not getting transferred to response message type in my synchronous message interface. My message type has only one field of type string. And I thought that this HTML will be transferred to the message type as string. I am correct in expecting this?
If not, is there any way to read this HTML and put it into the response structure of the message interface?
Thanks for your help.
Rahul.
Message was edited by:
Rahul Aurangabadkar -
Exception creating response stream in weblogic
Hi,
i have a small piece of java code which connects AgilePLM system and creates the session. in Jdeveloper its working but when i convert is as webservice and try to invoke iam getting below exception
weblogic.rjvm.PeerGoneException: ; nested exception is: weblogic.utils.NestedException: java.lang.AssertionError: Exception creating response stream
here is my java function
public String connect() {
try{
IAgileSession session = null;
AgileSessionFactory factory;
factory = AgileSessionFactory.getInstance("host");
HashMap params = new HashMap();
params.put(AgileSessionFactory.USERNAME, "user");
params.put(AgileSessionFactory.PASSWORD, "password");
session =factory.createSession(params);
}catch(Exception e) { }
i tried all possible ways to resolve this...any help would be appreciated
Regards,
Sudhakar.Mi solved.
1) Copy "wlsauth.jar" and "crypto.jar" to add-on server from agile server.
from: [Agile_Home]\agileDomain\lib
to: e.g. C:\agile9312_lib
2) Set them as CLASSPATH env. via system property.
e.g. C:\agile_9312lib\wlsauth.jar;C:\agile9312_lib\crypto.jar
3) start WebLogic
i also tried below instead, but it was not working. why??
Copy jars to user domain's lib:
e.g. C:oracle:middleware\user_projects\domains\base_domain\lib -
IPad Email response streams in single line
My iPad email responses stream in a single line..forever. Not the normal paragraph format, which I had, and want back. I didn't change settings.Thanks
Message was edited by: ninabgirlHi,
Tap Settings / Mail, Contacts, and Calendars / Preview. Try 2 or 3 or more lines then reseting your iPad.
Press and hold the Sleep/Wake button and the Home button at the same time for at least ten seconds, until the Apple logo appears
See if that makes a difference.
Carolyn -
How to save html response when execute a siebel load test.
First at all excusme for my english.
I need help to manage html response. I use OpenScript Version: 9.3.1.0 Production.
When i execute a siebel load test, some of the VU returns the error "12152 the server response could not be parsed". Mi boss asked me an image or html response to analize the error. But i dont now how to get it.
I search in all logs but i didn´t find nothing usefull.
Anyone know how to save the html response when execute a load test?
Thanks.
Gabriel."First at all excusme for my english."
=> are you french? I am! So no problem of course ;-)
Which ATS version do you use? Because starting with 12.1, you have a better VU Logging capabilities.
From the OLT user guide:
The virtual user logs window has the following toolbar options:
Open - Opens an existing virtual user log.
Save as CSV - Exports the current VU log to a comma-separated value file.
Clear - Clears the virtual user logs.
View Text - Displays the source HTML for pages accessed by the virtual user.
Render HTML - Displays actual pages as accessed by the virtual user.
Auto Display - Displays pages as they are received by the viewer.
See if it can help.
If not, maybe you could implement some logics in OpenScript, but i wouldn' advice that.
JB -
HTML Responsibility to create a new CRM Resource
Hi folks,
Is there a HTML Responsibility that could be used to import an employee as a CRM Resource?
Thanks in advance for the help.
Regards.Try the following:
File file = new File("C:/Tomcat/webapps/ROOT/ab.html");
file.createNewFile();
FileOutputStream fos = new FileOutputStream(file); BufferedOutputStream bos = new BufferedOutputStream(fos);
for (int i=0;i<buf.length;i++)
fos.write(buf);
fos.flush();
fos.close();
This should work..... :)
Regards
Tolstrup -
Raw XML Response Stream from WeblogicServiceProxy
How can I get the raw XML response stream from a SoapMethod invoked by the WeblogicServiceProxy?
thanks,
KarthikFrom what I know, all Java XML libraries make sure the XML is well-formed before attempting to read it. If you just get chunks of XML, a single chunk in itself will probably not be well-formed.
Can't you buffer the data (in a byte array input stream or something) until you get the entire XML, and only then attempt to load using SAX or whatever?
Simon -
How to display HTML response file in user's browser following submission of Livecycle form
I have a PDF form created via Livecycle that does a HTTP submit to the webserver. The server returns a HTML 'submission receipt' page which is either opened in Acrobat or the user's web browser.
Previously this process worked fine when submitting from adobe reader - the html receipt file would always automatically open OK in the user's browser. However, with newer versions of Reader (11.0.0+) I now get this error and no attempt to open the user's web browser:
An error occurred during the submit process. Cannot process content of type text/html
I realise why I get the error - Adobe reader can't display HTML files.
What I don't understand is why it doesn't open the html file in the user's browser like it has been doing for years.
Does anyone have any idea how I can fix this (without changing the response content type to PDF/FDF)?I had the same issue as you and we used FDF status, then eventually went with returning an XDP that filled out a receipt section of the form.
-
Strange behaviour when embedding HTML page in Air
Hi,
I'm trying to embedd a HTML page to a Air application.
The HTML page has a simple Flex application (TestFlex4Project.mxml) with a button that changes one HTML element on the web page (TestFlex4Project.html) using ExternalInterface. If I run the Flex application using the HTML page it works just fine and when I click the button the HTML ellement is changed and the mouseover- and onclick events works. If I embedd the HTML page in an Air application the mouseover- and onclick events does not work any more. Why?
If I use Aternative 1 in the HTML code (instead of using Aternative 2 in the HTML code where I'm editing the innerHTML property) the mouseover- and onclick events works when the HTML page is embeded in Air. Why?
Even more strange is that if I remove the line [<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />] from the HTML page the Flex application dose not show at all when embedded in Air. Why?
You can try the online sample here and the files here.
The application looks like this:
And if you click the button and click the upper most text you will recieve a message like this:
But not when I use innerHTML and embedd the HTML page in Air. Can anyone please help me with this issue. Is it a bug or what am I doing wrong? I need to change some HTML elements using innerHTML.
Thanks!!
The code for TestFlex4Project.mxml is like this
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
width="100%"
height="100%">
<fx:Script>
<![CDATA[
function buttonClickHandler(event:Event):void{
ExternalInterface.call(" function(){SetHTML();}")
]]>
</fx:Script>
<s:HGroup verticalAlign="middle">
<s:Button label="Edit HTML Element" click="buttonClickHandler(event)"/>
</s:HGroup>
</s:Application>
The code for TestFlex4Project.html is like this
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>Test Flex 4 Project</title>
<meta name="description" content="" />
<script src="js/swfobject.js"></script>
<script>
var flashvars = {
var params = {
menu: "false",
scale: "noScale",
allowFullscreen: "true",
allowScriptAccess: "always",
bgcolor: "",
wmode: "direct" // can cause issues with FP settings & webcam
var attributes = {
id:"TestFlex4Project"
swfobject.embedSWF(
"TestFlex4Project.swf",
"altContent", "100%", "100%", "10.0.0",
"expressInstall.swf",
flashvars, params, attributes);
function Message(){
alert("Message!")
function SetHTML(){
//Start Alternative 1
NewHTML.innerHTML = "Dynamically changed text"
NewHTML.style.cursor = "pointer"
NewHTML.style.color = "#ff0000"
NewHTML.onclick = function(){
Message();
NewHTML.onmouseover = function(){
this.style.fontWeight = 700;
//End Alternative 1
//Start Alternative 2
var HTMLStr='<p style="cursor:pointer; fontWeight:300; color:#ff0000" onClick = "Message()" onMouseOver = "this.style.fontWeight=700">Dynamically changed text</p>'
NewHTML.outerHTML=HTMLStr
//End Alternative 2
</script>
<style>
html, body { height:100%; overflow:hidden; }
body { margin:0; }
</style>
</head>
<body id="Body">
<p id="NewHTML">This text will change when you click the button!</p>
<p style="cursor:pointer; fontWeight:'300'; color:#ff0000" onClick = "Message()" onmouseover = "this.style.fontWeight='700'">Default text</p>
<div id="altContent">
<p><a href="http://www.adobe.com/go/getflashplayer">
<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
</a>
</p>
</div>
</body>
</html>
The code for the Airapplication is like this
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
width="800"
height="566">
<mx:HTML id="HTMLObject" location="TestFlex4Project.html" width="100%" height="100%"/>
</s:WindowedApplication>Hi,
I'm trying to embedd a HTML page to a Air application.
The HTML page has a simple Flex application (TestFlex4Project.mxml) with a button that changes one HTML element on the web page (TestFlex4Project.html) using ExternalInterface. If I run the Flex application using the HTML page it works just fine and when I click the button the HTML ellement is changed and the mouseover- and onclick events works. If I embedd the HTML page in an Air application the mouseover- and onclick events does not work any more. Why?
If I use Aternative 1 in the HTML code (instead of using Aternative 2 in the HTML code where I'm editing the innerHTML property) the mouseover- and onclick events works when the HTML page is embeded in Air. Why?
Even more strange is that if I remove the line [<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />] from the HTML page the Flex application dose not show at all when embedded in Air. Why?
You can try the online sample here and the files here.
The application looks like this:
And if you click the button and click the upper most text you will recieve a message like this:
But not when I use innerHTML and embedd the HTML page in Air. Can anyone please help me with this issue. Is it a bug or what am I doing wrong? I need to change some HTML elements using innerHTML.
Thanks!!
The code for TestFlex4Project.mxml is like this
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
width="100%"
height="100%">
<fx:Script>
<![CDATA[
function buttonClickHandler(event:Event):void{
ExternalInterface.call(" function(){SetHTML();}")
]]>
</fx:Script>
<s:HGroup verticalAlign="middle">
<s:Button label="Edit HTML Element" click="buttonClickHandler(event)"/>
</s:HGroup>
</s:Application>
The code for TestFlex4Project.html is like this
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>Test Flex 4 Project</title>
<meta name="description" content="" />
<script src="js/swfobject.js"></script>
<script>
var flashvars = {
var params = {
menu: "false",
scale: "noScale",
allowFullscreen: "true",
allowScriptAccess: "always",
bgcolor: "",
wmode: "direct" // can cause issues with FP settings & webcam
var attributes = {
id:"TestFlex4Project"
swfobject.embedSWF(
"TestFlex4Project.swf",
"altContent", "100%", "100%", "10.0.0",
"expressInstall.swf",
flashvars, params, attributes);
function Message(){
alert("Message!")
function SetHTML(){
//Start Alternative 1
NewHTML.innerHTML = "Dynamically changed text"
NewHTML.style.cursor = "pointer"
NewHTML.style.color = "#ff0000"
NewHTML.onclick = function(){
Message();
NewHTML.onmouseover = function(){
this.style.fontWeight = 700;
//End Alternative 1
//Start Alternative 2
var HTMLStr='<p style="cursor:pointer; fontWeight:300; color:#ff0000" onClick = "Message()" onMouseOver = "this.style.fontWeight=700">Dynamically changed text</p>'
NewHTML.outerHTML=HTMLStr
//End Alternative 2
</script>
<style>
html, body { height:100%; overflow:hidden; }
body { margin:0; }
</style>
</head>
<body id="Body">
<p id="NewHTML">This text will change when you click the button!</p>
<p style="cursor:pointer; fontWeight:'300'; color:#ff0000" onClick = "Message()" onmouseover = "this.style.fontWeight='700'">Default text</p>
<div id="altContent">
<p><a href="http://www.adobe.com/go/getflashplayer">
<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
</a>
</p>
</div>
</body>
</html>
The code for the Airapplication is like this
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
width="800"
height="566">
<mx:HTML id="HTMLObject" location="TestFlex4Project.html" width="100%" height="100%"/>
</s:WindowedApplication> -
HTML Responsive Layout for tablet and phone is not showing icons correct on a converted help file
I am using the Responsive HTML Layout in RoboHelp 11. On all of my new help files, the layout works great and my icons are showing appropriately. On all of my old help files that were converted, my icons do not fit within bar for the tablet and phone. I am using the Government Theme (Theme2_Government), but modified the file to have our colors and logos. I exported the .slz file and I am using the same slz file in all of the help files. The only help files that are cutting off the icons are the help files that were converted from previous version of RoboHelp. Any idea why this would happen?
This is from the converted file showing the icons that are cut off in the blue bar.
This one is from a new help file and the icons fit within the blue bar.
The same thing happens the phone layout with the bar at the bottom. -
Occasionally Connected LightSwitch HTML Apps Using JayData
JayData, as many are probably aware from prior blog posts and discussions on this forum, is a powerful JavaScript utility library for OData providers, including LightSwitch.
Recently, the JayData developers have expanded the
provider offerings to include many other database programmatic interfaces.
Their latest release, JayData 1.3.6, codenamed “Advanced Sync Edition,” aims to support occasionally connected apps by exploiting the local storage capability of the browser (Web SQL. sqLite, IndexedDb, etc.).
Development is simplified when using the same data model and API for writing to both local storage and the OData endpoint.
An example of this is shown at How to Create a Synchronized Online-Offline Data App with JavaScript and JayData.
This model, the “To Does” project, was successfully adapted to a LightSwitch HTML app without difficulty.
Although “To Does” projects like this serve as a nice proof-of-concept, they are excessively simple compared to real world business applications.
Fortunately, JayData 1.3.6 also includes support for configurable foreign keys.
With this, more complex object-relational mapping that would typically be used with Entity Framework and similar RDBMS may be approximated.
To illustrate, the To Does project was expanded to include entity relationships.
Specifically, a To Do must be assigned to a single individual Project, and any single Project can have many To Does.
A Project can be assigned to an Employee or to multiple Employees, while an Employee can have a single Project or many Projects, thus defining a many-to-many relationship between Employee and Project.
So how might and online-offline LightSwitch HTML application work in practice?
Ideally in my opinion, the transition from online to offline and back should be seamless and transparent to the user, allowing for both UX and UI to be unperturbed.
This approach turned out to be too difficult for me as a developer, as I experienced problems with the closed-end nature of LightSwitch’s Visual Collection object, for instance. Separation of concerns is a real challenge with this approach.
There is also the separate UI approach for both offline and online data entry, which have been nicely illustrated by Michael Washington and Paul van Bladel on their blogs using JayData and BreezeJS with AngularJS alongside a LightSwitch HTML
app. This approach is valid, and from the viewpoint of the developer has its advantages. From a design standpoint, it is likely to be frustrating for an end-user who must deal with “spotty” network coverage, necessitating changing back-and-forth
from one UI to another.
I opted for a hybrid approach, staying entirely inside the LightSwitch HTML app environment but having individual menu options to select depending on the user’s online status, which is constantly displayed with a status icon (see Main Menu figure).
In many cases, the native LightSwitch screen and menu buttons are fully functional in the offline state.
When they are not, most often with regard to a “Browse” screen or involving a Visual Collection, I have substituted the updated WinJS library (now at
version 4.0, capable of replacing LightSwitch’s v1.0 with no breaking changes) to create a custom control that resembles the LightSwitch listview.
To use the app, you can use any of the online Menu buttons to enter Employee, Project, or To Do data in the usual way while connected.
The Offline menu buttons are functional in either a connected or disconnected status, which can be tested by disabling your devices WiFi, for example.
This LightSwitch app does not work with all browsers, however.
Because the local database is stored using the Web SQL/sqLite JayData API, it is not supported by either IE or FireFox.
It is supported by Chrome, Safari, Opera, Android browsers, Kindle Fire, and iPad browsers
(see link).
To see the local data stored in Web SQL while using Chrome, you can press F12, select Resources, and expand Web SQL to see the Table data updated with each transaction (see figure).
After entering data using the Offline menu selections, you will want to synchronize your local data with the remote LightSwitch database, which is performed by clicking “Synchronize Offline to Online” on the Main Menu.
A success or error dialog message should follow, depending on the result of the sync.
The dates and times of the last synchronizations are displayed on the Main Menu.
With each online database transaction, including offline to online syncs, the offline database is updated to reflect the very latest LightSwitch application data.
This method attempts to have the LightSwitch online database as the “single source of truth” as much as possible while the user is online.
Lastly (if anyone is still reading this far), note that by design there is no business logic programmed into this application; business logic is a separate issue to be addressed.
There can be as many incomplete To Does as you want, an Employee can be assigned the same Project many times, etc.
If your application requires business logic, you will have to program it into the client-side in order for the user to be prompted to follow it while offline.
To experiment with LightSwitch OfflineToDoes app, go to:
http://offlinetodoes.azurewebsites.net/htmlclient
…and log in with username “testuser” and password “Testuser1!”
In a few days I will try to load the sample project code to MSDN for anyone to download and review if desired.
TL;DR:
JayData provides an attractive solution for creating online-offline LightSwitch HTML apps by automating a single codebase to carry out CRUD operations on both a local datasource and the remote LightSwitch database.
Integrating the offline portion of the app into the LightSwitch UI requires an individualized solution and is code-intensive, however.Thank you both for the input. Zardoz, I tried making a couple of updates to address items you mentioned. I left unfixed the problem that occurs when editing an offline Project's budget item..this still does not work. LightSwitch identifies this
entity as a decimal, WebSql expects a plain number, but LightSwitch's post-processing business type formats it to currency (I see USD, you may see NZD, AUD, etc.) In the console there is a "getModel() is undefined" in msls.js. If I take
out the Money business type to regular Text on the View, it works fine.
I'm not sure if I understood your last item just right, but I tweaked the Add Edit Offline Project screen to prevent the Project from being null if the user only enters a new To Do. Not sure why the screen validation wasn't firing before.
Regarding navigation, I don't wish to use the browser's back or forward buttons at all for the app, especially the Offline portion, only the LightSwitch menu navigation and command buttons. I know Xpert360 has shown how to put the former LightSwitch back
button in the app which is useful too. Navigation, cacheing and disposing were some of the tricky parts getting to integrate between LightSwitch UI and offline custom controls. Occasionally I felt like I was having to be "clever" at solutions,
except that when it comes to programming, I'm not a fan of cleverness.
The project is published
here. Hopefully this serves as a good starting point for someone, and I look forward to seeing how it can be improved upon and used in practice.
Maybe you are looking for
-
How to modify F4 help of one parameter based on the value of another?
Hi, My Query is as follows: I have 3 select-options / parameters on the selection screen. If I enter some value in the first parameter the values in the second parameter should reflect accordingly. For example: The 3 selection-screen parameters are:
-
SQL Developer is not exporting the time part of date data types.
I need to export data from a table using sql developer. The column is a date data type but when I export the data to a csv, xls or an sql file with insert statements, sql developer only includes the date part without the time. Please kindly advise. T
-
Opening a pdf file from safari
Hello! I am having trouble opening a pdf file (I installed Adobe 10.1) over the internet from my laptop (OS X Lion 10.7.2) Any solutions? Thanks so much. You are awesome
-
How to embed Flex swf into existing Flash?
Hello, I am brand new to Flex, so I desperately need your help! I have an existing Flash file, written in Flash 8. When I open this file, it plays in Flash Player 9, the latest player I have installed on my machine. This Flash file tries to dynamical
-
Hi all, I get PO text filled in the migo transaction one way if in ME23N "Indicator for Service-Based Invoice Verification " is active and another way if flag not active. Is there a user exit that allows the determination of the PO text ? or How can