[opencms-dev] Responding back to application's HTTP POST valueswith HttpContentType=application/x-www-form-urlencoded

Jeremy Wilson jeremy.wilson at laplink.com
Thu Aug 13 17:39:56 CEST 2009


As it turns out, my response simply needed to be in the "text/html"
format.  Just basic text strings output to the page.  

Sadly the company we were working with to achieve a communcation between
our web server and their binaries basically wasted a month of our time
by not giving us the details of this.  

Hindsight is always 20/20 and spotty documentation really does result in
a lot of 'black box' testing.



Jeremy Wilson | Web Developer | Laplink Software, Inc | 425.952.6029
office | 425.952.6002 fax |  mailto:jeremy.wilson at laplink.com |
www.laplink.com 
-----Original Message-----
From: Ruben Malchow [mailto:ruben at disk0.de] 
Sent: Thursday, August 13, 2009 1:07 AM
To: The OpenCms mailing list; Jeremy Wilson
Subject: Re: [opencms-dev] Responding back to application's HTTP POST
valueswith HttpContentType=application/x-www-form-urlencoded



hi,

first off, i would think that application/x-www-form-urlencoded is most 
commonly used for requests, not for responses. second, i wonder what the

problem with this is ... i mean - what is the information contained in 
the response that it cannot be sent in utf-8? if it was binary, i could 
understand you don't want it to be sent as text/html ... but then you 
probably wouldn't want urlencoding for binaries either.

so ... maybe you can provide some more information on the type of data 
being sent/received?



Jeremy Wilson schrieb:
> Has anyone every experienced this problem or do you know  of any
> possible solutions to it?  Please let me know otherwise I'm completely
> stuck and will have to recode everything into PHP mostly from scratch.
> 
>  
> 
>  
> 
>  
> 
> Jeremy Wilson | Web Developer | Laplink Software, Inc | 425.952.6029
> office | 425.952.6002 fax |  mailto:jeremy.wilson at laplink.com |
> www.laplink.com 
> 
> From: opencms-dev-bounces at opencms.org
> [mailto:opencms-dev-bounces at opencms.org] On Behalf Of Jeremy Wilson
> Sent: Tuesday, August 04, 2009 10:43 AM
> To: opencms-dev at opencms.org
> Subject: [opencms-dev] Responding back to application's HTTP POST
> valueswith HttpContentType=application/x-www-form-urlencoded
> 
>  
> 
> I am trying to communicate back to an executable (installer file) that
> is sending me values via HTTP POST but continue to run into problems
> with the HttpContentType being converted back to
> "text/html;charset=UTF-8" within OpenCMS 6.2.1.
> 
>  
> 
> How do I set my pages's response (HttpContentType) as
> "application/x-www-form-urlencoded" and keep it that way.  I've tried
a
> number of different methods but it seems as though OpenCMS is forcing
> the HttpContentType to revert back before I can communicate back to
the
> application by way of out.print("something");
> 
>  
> 
> Is this a known problem in OpenCMS 6.2.1?  Is there something within
the
> configuration files that I can do to prevent my attempts to responsd
> from being converted back to "text/html;charset=UTF-8".
> 
>  
> 
> Thanks in advance.
> 
>  
> 
> Here is the code (index.jsp)  I'm trying to create the response back
to
> the application with:
> 
>  
> 
> <%@ page session="false" %>
> 
> <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
> 
>  
> 
> <%@ taglib uri="http://jakarta.apache.org/taglibs/regexp-1.0"
> prefix="rx" %>
> 
> <%@ taglib uri="http://jakarta.apache.org/taglibs/string-1.1"
> prefix="str" %>
> 
>  
> 
> <%@ page import="java.io.*"%> 
> 
> <%@ page import="java.util.*"%>
> 
> <%@ page import="java.lang.*"%> 
> 
> <%@ page import="java.net.*"%> 
> 
>  
> 
> <%@ page import="javax.servlet.*"%> 
> 
> <%@ page import="javax.servlet.http.*"%>
> 
> <%@ page import="javax.servlet.http.HttpServletRequest"%> 
> 
> <%@ page import="javax.servlet.http.HttpServletResponse"%>
> 
>  
> 
>  
> 
> <jsp:useBean id="cms" class="org.opencms.jsp.CmsJspActionElement">
> 
> <% cms.init(pageContext, request, response); %>        
> 
> </jsp:useBean>          
> 
>  
> 
>  
> 
> <%-- ******** set POST submission type, a) register, b) subscribe, or
c)
> null which is the product update post  ***** --%>
> 
>  
> 
> <c:set var="regcheck">register</c:set>
> 
> <c:set var="regtype" value="${param.type}" />
> 
>  
> 
> <c:choose>
> 
> <c:when test="${regcheck == regtype}">
> 
>  
> 
>       <%-- ****************************************
> 
>       //  get the HTTP POST values and set them as variables :
> 
>       //  1) type, 2) product, 3) language, 4) versionmajor, 5)
> versionminor, 6) versionbuild, 
> 
>       //  7) email, 8) user, 9) company and 10) serial values 
> 
>       //  for product registration HTTP POST submission  
> 
>       ****************************************--%>
> 
>  
> 
>       <c:set var="email" value="${param.email}" />
> 
>       <c:out value="${email}"/>
> 
>       <c:set var="user" value="${param.user}" />
> 
>       <c:out value="${user}"/>
> 
>       <c:set var="company" value="${param.company}" />
> 
>       <c:out value="${company}"/>
> 
>       <c:set var="serial" value="${param.serial}" />
> 
>       <c:out value="${serial}"/>
> 
>  
> 
>       <c:set var="currentProduct">Laplink Defrag Professional
> Edition</c:set>
> 
>       <c:set var="prod" value="${param.product}" />
> 
>       <c:out value="${currentProduct}"/>
> 
>  
> 
>       <c:set var="currentLanguage">EN</c:set>
> 
>       <c:set var="lang" value="${param.language}" />
> 
>       <c:out value="${currentLanguage}"/>
> 
>  
> 
>       <%--  major, minor and version build values for Laplink Defrag
> 11.0.0000  ***** --%>
> 
>       <c:set var="currentMajor">11</c:set>
> 
>       <c:set var="versionmaj" value="${param.versionmajor}" />
> 
>       <c:set var="currentMinor">0</c:set>
> 
>       <c:set var="versionmin" value="${param.versionminor}" />
> 
>       <c:set var="currentBuild">0000</c:set>
> 
>       <c:set var="versionbld" value="${param.versionbuild}" />
> 
>  
> 
>       <c:set var="serverresponse">OK</c:set>
> 
>       <c:out value="${serverresponse}"/>
> 
>  
> 
>       <%
> 
>       // Get the POST parameters from Laplink Defrag .EXE - should be
> passed in the HTTP request
> 
>       String strregtype = request.getParameter("type");
> 
>       String strregemail = request.getParameter("email");
> 
>       String strreguser = request.getParameter("user");
> 
>       String strregcompany = request.getParameter("company");
> 
>       String strregserial = request.getParameter("serial");
> 
>       String strregproduct = request.getParameter("product");
> 
>       String strreglanguage = request.getParameter("language");
> 
>       String strregversionmajor =
request.getParameter("versionmajor");
> 
>       String strregversionminor =
request.getParameter("versionminor");
> 
>       String strregversionbuild =
request.getParameter("versionbuild");
> 
>  
> 
>       // TEST the HTTP POST values from O&O Check for Updates to see
> what actual values are being passed.
> 
>       // String paramString =
>
"&product="+product+"&language="+language+"&versionmajor="+versionmajor+
> "&versionminor="+versionminor+"&versionbuild="+versionbuild;
> 
>       // String paramStringSubscribe =
>
"&type="+typeooreg+"&product="+product+"&language="+language+"&versionma
>
jor="+versionmajor+"&versionminor="+versionminor+"&versionbuild="+versio
> nbuild;
> 
>       String paramStringRegister =
>
"type="+strregtype+"&email="+strregemail+"&user="+strreguser+"&company="
>
+strregcompany+"&serial="+strregserial+"&product="+strregproduct+"&langu
>
age="+strreglanguage+"&versionmajor="+strregversionmajor+"&versionminor=
> "+strregversionminor+"&versionbuild="+strregversionbuild;
> 
>       %>
> 
>  
> 
>       <% 
> 
>          response.setStatus(response.SC_OK);
> 
>          response.setContentType("application/x-www-form-urlencoded");
> 
>          response.setHeader("Content-Type",
> "application/x-www-form-urlencoded");
> 
>          response.setHeader("Pragma", "No-cache");
> 
>          response.setHeader("Cache-Control", "no-cache");
> 
>       
> 
>          response.setHeader("result", "OK");
> 
>  
> 
>          // Respond to the application with OK result
> 
>          String result = "OK";
> 
>          out.print("result=" + result);
> 
>  
> 
>       // <c:set var="serverresponse">OK</c:set>
> 
>       // <c:out value="${serverresponse}"/>
> 
>       %>
> 
>       <% response.setStatus(307); %>
> 
>       <% response.setHeader("Location",
>
"http://www.laplink.com/mysupport/register/ooreg.asp?"+paramStringRegist
> er); %>
> 
>  
> 
>       <%--
>
response.sendRedirect("http://www.laplink.com/mysupport/register/ooreg.a
> sp?"+paramStringRegister); --%>
> 
>  
> 
>  
> 
> </c:when>
> 
> </c:choose>
> 
>  
> 
> <c:set var="subcheck">subscribe</c:set>
> 
> <c:set var="subtype" value="${param.type}" />
> 
>  
> 
> <c:choose>
> 
> <c:when test="${subcheck == subtype}">
> 
>  
> 
>       <%-- ****************************************
> 
>       //  get the HTTP POST values and set them as variables :
> 
>       //  1) type, 2) email and return OK | ERR
> 
>       //  for newsletter subscription HTTP POST submission  
> 
>       ****************************************--%>
> 
>  
> 
>       <%--  HTTP POST parameter type is equal to subscribe and email
is
> equal to user email   ***** --%>
> 
>       <c:set var="email" value="${param.email}" />
> 
>       <c:out value="${email}"/>
> 
>       <c:out value="${subtype}"/>
> 
>  
> 
>       <% 
> 
>          response.setStatus(response.SC_OK);
> 
>          response.setContentType("application/x-www-form-urlencoded");
> 
>          response.setHeader("Content-Type",
> "application/x-www-form-urlencoded");
> 
>          response.setHeader("Pragma", "No-cache");
> 
>          response.setHeader("Cache-Control", "no-cache");
> 
>  
> 
>          response.setHeader("result", "OK");
> 
>  
> 
>          // Respond to the application with OK result
> 
>          String result = "OK";
> 
>          out.print("result=" + result);
> 
>          // out.print("OK");
> 
>       %>
> 
>       <% response.setStatus(307); %>
> 
>       <% response.setHeader("Location",
> "http://www.laplink.com/mysupport/register/ooreg.asp"); %>
> 
>  
> 
> </c:when>
> 
> </c:choose>
> 
>  
> 
> <c:set var="updatecheck"></c:set>
> 
> <c:set var="updatetype" value="${param.type}" />
> 
>  
> 
> <c:choose>
> 
> <c:when test="${updatetype eq null}">
> 
>  
> 
>       <%-- ****************************************
> 
>       //  get the HTTP POST values and set them as variables :
> 
>       //  1) type, 2) product, 3) language, 4) versionmajor, 5)
> versionminor, 6) versionbuild, 
> 
>       //  for product registration HTTP POST submission  
> 
>       **************************************** --%>
> 
>  
> 
>       <%-- set the current version number, product, and language
values
> for Laplink Defrag 11.5.4165  ***** --%>
> 
>       <c:set var="currentProduct">Laplink Defrag Professional
> Edition</c:set>
> 
>       <c:set var="prod" value="${param.product}" />
> 
>  
> 
>       <c:set var="currentLanguage">EN</c:set>
> 
>       <c:set var="lang" value="${param.language}" />
> 
>  
> 
>       <%--  major, minor and version build values for Laplink Defrag
> 11.0.0000  ***** --%>
> 
>       <c:set var="currentMajor">11</c:set>
> 
>       <c:set var="versionmaj" value="${param.versionmajor}" />
> 
>       <c:set var="currentMinor">0</c:set>
> 
>       <c:set var="versionmin" value="${param.versionminor}" />
> 
>       <c:set var="currentBuild">0000</c:set>
> 
>       <c:set var="versionbld" value="${param.versionbuild}" />
> 
>  
> 
>       <c:choose>
> 
>       <c:when test="${prod == currentProduct}">
> 
>             <c:choose>
> 
>                   <c:when test="${versionmaj == currentMajor}">
> 
>                         <c:choose>
> 
>                               <c:when test="${versionmin ==
> currentMinor}">
> 
>                               <c:choose>
> 
>                                     <c:when test="${versionbld ==
> currentBuild}">
> 
>                                     <%--  product and major version
URL
> parameters passed match   ******** --%>
> 
>                                           <c:set
var="result">OK</c:set>
> 
>                                           <c:set
var="update">0</c:set>
> 
>                                           <c:set
> var="updateid">NULL</c:set>
> 
>  
> 
>                                           <% 
> 
>                                              // <c:out
> value="${result}"/>
> 
>                                              // <c:out
> value="${update}"/>
> 
>                                              // <c:out
> value="${updateid}"/>
> 
>  
> 
>  
> response.setStatus(response.SC_OK);
> 
>  
> response.setContentType("application/x-www-form-urlencoded");
> 
>  
> response.setHeader("Content-Type",
"application/x-www-form-urlencoded");
> 
>  
> response.setHeader("Pragma", "No-cache");
> 
>  
> response.setHeader("Cache-Control", "no-cache");
> 
>  
> 
>  
> response.setHeader("result", "OK");
> 
>  
> response.setIntHeader("update", 0);
> 
>  
> response.setHeader("updateid", "NULL");
> 
>  
> 
>                                              // Respond to the
> application with 1) result, 2) update, and 3) updateid values
> 
>                                              String result = "OK";
> 
>                                              String update= "0";
> 
>                                              String updateid= "NULL";
> 
>                                           
> 
>                                              out.print("result=" +
> result + "&");
> 
>                                              out.print("update=" +
> update + "&"); 
> 
>                                              out.print("updateid=" +
> updateid); 
> 
>                                           %>          
> 
>                                     </c:when>
> 
>                                     <c:when test="${versionbld <
> currentBuild}">
> 
>                                     <%--  product and major version
URL
> parameters passed match   ******** --%>
> 
>                                           <c:set
var="result">OK</c:set>
> 
>                                           <c:set
var="update">1</c:set>
> 
>                                           <c:set
> var="updateid">90017</c:set>
> 
>  
> 
>                                           <% 
> 
>                                              // <c:out
> value="${result}"/>
> 
>                                              // <c:out
> value="${update}"/>
> 
>                                              // <c:out
> value="${updateid}"/>
> 
>  
> 
>  
> response.setStatus(response.SC_OK);
> 
>  
> response.setContentType("application/x-www-form-urlencoded");
> 
>  
> response.setHeader("Content-Type",
"application/x-www-form-urlencoded");
> 
>  
> response.setHeader("Pragma", "No-cache");
> 
>  
> response.setHeader("Cache-Control", "no-cache");
> 
>  
> 
>  
> response.setHeader("result", "OK");
> 
>  
> response.setIntHeader("update", 1);
> 
>  
> response.setIntHeader("updateid", 90017);
> 
>  
> 
>                                              // Respond to the
> application with 1) result, 2) update, and 3) updateid values
> 
>                                              String result = "OK";
> 
>                                              String update= "1";
> 
>                                              String updateid= "90017";
> 
>                                           
> 
>                                              out.print("result=" +
> result + "&");
> 
>                                              out.print("update=" +
> update + "&"); 
> 
>                                              out.print("updateid=" +
> updateid); 
> 
>                                           %>
> 
>                                     </c:when>
> 
>                               </c:choose>
> 
>                               </c:when>
> 
>                         </c:choose>
> 
>                   </c:when>
> 
>             </c:choose>
> 
>       </c:when>
> 
>  
> 
>       <c:when test="${prod != currentProduct}">
> 
>             <%-- do something in the event that none of the above
> parameters sent from O&O are matched --%>
> 
>  
> 
>             <%--  user URL parameters are less than major and minor
> versions specified above  ******** --%>
> 
>             <c:set var="result">OK</c:set>
> 
>             <c:out value="${result}"/>
> 
>  
> 
>             <% response.setStatus(response.SC_OK); %>
> 
>             <%--
> response.setContentType("application/x-www-form-urlencoded"); --%>
> 
>             <% response.setHeader("ContentType",
> "application/x-www-form-urlencoded"); %>
> 
>  
> 
>             <% response.setHeader("result", "ERR"); %>
> 
>  
> 
>             <%
> 
>             // Respond to the application with OK result
> 
>             String result = "OK";
> 
>             out.print("result=" + result);
> 
>             %>
> 
>             <p>Your product does not match our list of available
> products.  There is no update for <c:out value="${prod}"/> <c:out
> value="${versionmaj}"/>.<c:out value="${versionmin}"/>.<c:out
> value="${versionbld}"/> available here.</p>
> 
>  
> 
>       </c:when>
> 
>  
> 
>       <c:otherwise>
> 
>       <%--  user come to the page with no URL parameters
> ****************** --%>
> 
>             <c:set var="result">OK</c:set>
> 
>             <c:out value="${result}"/>
> 
>  
> 
>             <% response.setStatus(response.SC_OK); %>
> 
>             <%--
> response.setContentType("application/x-www-form-urlencoded"); --%>
> 
>             <% response.setHeader("ContentType",
> "application/x-www-form-urlencoded"); %>
> 
>  
> 
>             <% response.setHeader("result", "OK"); %>
> 
>             <% response.setIntHeader("update", 0); %>
> 
>             <% response.setHeader("updateid", "NULL"); %>
> 
>  
> 
>             <%
> 
>             // Respond to the application with OK result
> 
>             String result = "OK";
> 
>             out.print("result=" + result);
> 
>             %>
> 
>  
> 
>             <p>No URL parameters branch</p>
> 
>  
> 
>       </c:otherwise>
> 
>       </c:choose>
> 
>  
> 
> </c:when>
> 
> </c:choose>
> 
>  
> 
> Jeremy Wilson | Web Developer | Laplink Software, Inc | 425.952.6029
> office | 425.952.6002 fax |  mailto:jeremy.wilson at laplink.com |
> www.laplink.com 
> 
> No virus found in this incoming message.
> Checked by AVG - www.avg.com
> Version: 8.5.392 / Virus Database: 270.13.43/2280 - Release Date:
> 08/04/09 05:57:00
> 
> 
> 
> 
>
------------------------------------------------------------------------
> 
> 
> _______________________________________________
> This mail is sent to you from the opencms-dev mailing list
> To change your list options, or to unsubscribe from the list, please
visit
> http://lists.opencms.org/mailman/listinfo/opencms-dev



More information about the opencms-dev mailing list