You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Andrew Jarman <aj...@metacomcorp.com> on 2000/09/16 03:12:58 UTC
Unable to POST to my servlet (DESPARATE!)
Hi,
I have a servlet that needs to process XML data sent from a client
browser. The xml is not sent as a form post, but rather as direct XML.
This requires me to get the raw text sent in, so I can't use
getParameter.
I made a simple 'Echo' servlet that simply replies back what I've sent
in. When I run this on JDeveloper 3.1 using their WebToGo servlet
runner, it works perfectly. When I try it in Tomcat, I don't get
anything at all. (input is empty). I have tried this on Tomcat 3.1,
3.2B2 and 3.2B4 with the same results.
PLEASE PLEASE somebody give me a hand. I have a major integration to
complete this weekend, and this is the last sticking point.
I believe the Webtogo server is implementing Servlet 2.0, and Tomcat is
implementing 2.2
Any assistance is deeply appreciated.
---------------------------------------
Servlet doPost method
public void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = new PrintWriter
(response.getOutputStream());
out.println("<html>");
out.println("<head><title>Echo</title></head>");
out.println("<body>");
int sizeOfBuffer = 100;
char[] cbuf = new char[sizeOfBuffer];
int offset = 0;
int length = sizeOfBuffer;
int charactersRead = 0;
StringBuffer inputBuffer = new StringBuffer();
BufferedReader inputStreamReader = request.getReader();
while ( (inputStreamReader.ready()) &&
(charactersRead = inputStreamReader.read(cbuf,
offset, length)) != -1) {
inputBuffer.append(cbuf, offset,
charactersRead);
// display what's coming in for debugging
out.println("Reading... " +
inputBuffer.toString());
}
inputStreamReader.close();
out.println(inputBuffer);
out.println("</body></html>");
out.close();
}
---------------------------------------
Web page that generates the input
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;
charset=WINDOWS-1252">
<META NAME="GENERATOR" CONTENT="Oracle JDeveloper">
<TITLE>XML Protocol Adapter - Test 1: Submitting SOAP or HTTP/HTML
content</TITLE>
</HEAD>
<BODY>
<INPUT TYPE="text" ID="server" STYLE="width: 100%;"
VALUE="http://db2.metacomcorp.bogus:8080/servlet/adapter"/>
<TEXTAREA ROWS="5" STYLE="width: 100%;"
ID="request"><browse/></TEXTAREA>
<BUTTON ONCLICK="var http = new ActiveXObject('Microsoft.XMLHTTP');
http.open('POST', document.all.server.value,
false);
http.send(document.all.request.value);
document.all.result.value = http.responseText;"
>Send</BUTTON>
<TEXTAREA ROWS="15" STYLE="width: 100%;" ID="result">Result goes
here.</TEXTAREA>
</BODY>
</HTML>
Re: Unable to POST to my servlet (DESPARATE!)
Posted by "Craig R. McClanahan" <Cr...@eng.sun.com>.
Try it without the "ready()" test, which doesn't really accomplish anything
for you. You can also simplify a little in other ways, but this is the
most important issue.
int sizeOfBuffer = 100;
char[] cbuf = new char[sizeOfBuffer];
StringBuffer inputBuffer = new StringBuffer();
BufferedReader reader = request.getReader();
int chars = 0;
while ((chars = reader.read(cbuf)) >= 0) {
inputBuffer.append(cbuf, 0, chars);
}
reader.close();
Craig McClanahan
Andrew Jarman wrote:
> Hi,
>
> I have a servlet that needs to process XML data sent from a client
> browser. The xml is not sent as a form post, but rather as direct XML.
> This requires me to get the raw text sent in, so I can't use
> getParameter.
>
> I made a simple 'Echo' servlet that simply replies back what I've sent
> in. When I run this on JDeveloper 3.1 using their WebToGo servlet
> runner, it works perfectly. When I try it in Tomcat, I don't get
> anything at all. (input is empty). I have tried this on Tomcat 3.1,
> 3.2B2 and 3.2B4 with the same results.
>
> PLEASE PLEASE somebody give me a hand. I have a major integration to
> complete this weekend, and this is the last sticking point.
>
> I believe the Webtogo server is implementing Servlet 2.0, and Tomcat is
> implementing 2.2
>
> Any assistance is deeply appreciated.
>
> ---------------------------------------
> Servlet doPost method
>
> public void doPost(HttpServletRequest request,
> HttpServletResponse response) throws ServletException, IOException {
> response.setContentType("text/html");
> PrintWriter out = new PrintWriter
> (response.getOutputStream());
> out.println("<html>");
> out.println("<head><title>Echo</title></head>");
> out.println("<body>");
>
> int sizeOfBuffer = 100;
> char[] cbuf = new char[sizeOfBuffer];
> int offset = 0;
> int length = sizeOfBuffer;
> int charactersRead = 0;
> StringBuffer inputBuffer = new StringBuffer();
> BufferedReader inputStreamReader = request.getReader();
>
> while ( (inputStreamReader.ready()) &&
> (charactersRead = inputStreamReader.read(cbuf,
> offset, length)) != -1) {
> inputBuffer.append(cbuf, offset,
> charactersRead);
>
> // display what's coming in for debugging
> out.println("Reading... " +
> inputBuffer.toString());
> }
>
> inputStreamReader.close();
>
> out.println(inputBuffer);
>
> out.println("</body></html>");
> out.close();
> }
>
> ---------------------------------------
> Web page that generates the input
>
> <HTML>
> <HEAD>
> <META HTTP-EQUIV="Content-Type" CONTENT="text/html;
> charset=WINDOWS-1252">
> <META NAME="GENERATOR" CONTENT="Oracle JDeveloper">
> <TITLE>XML Protocol Adapter - Test 1: Submitting SOAP or HTTP/HTML
> content</TITLE>
> </HEAD>
>
> <BODY>
> <INPUT TYPE="text" ID="server" STYLE="width: 100%;"
> VALUE="http://db2.metacomcorp.bogus:8080/servlet/adapter"/>
> <TEXTAREA ROWS="5" STYLE="width: 100%;"
> ID="request"><browse/></TEXTAREA>
> <BUTTON ONCLICK="var http = new ActiveXObject('Microsoft.XMLHTTP');
> http.open('POST', document.all.server.value,
> false);
> http.send(document.all.request.value);
> document.all.result.value = http.responseText;"
> >Send</BUTTON>
> <TEXTAREA ROWS="15" STYLE="width: 100%;" ID="result">Result goes
> here.</TEXTAREA>
> </BODY>
> </HTML>
--
====================
See you at ApacheCon Europe <http://www.apachecon.com>!
Session VS01 (23-Oct 13h00-17h00): Sun Technical Briefing
Session T06 (24-Oct 14h00-15h00): Migrating Apache JServ
Applications to Tomcat