axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bhushan Khanal <bhush...@wrq.com>
Subject RE: HTTP 100 Continue
Date Wed, 11 Dec 2002 00:17:58 GMT
Davanum,

This is probably more than what you wanted but here is a small program that
contains the offense ;)

<Code Begin ------------------------------------------->

//
// XMethods sample client for the Barnes and Noble Pricecheck service
//

import java.io.*;
import java.net.*;
import java.util.*;
import org.apache.axis.Message ;
import org.apache.axis.server.AxisServer;
import org.apache.axis.MessageContext ;
import org.apache.axis.Constants;
import org.apache.axis.transport.http.HTTPSender ;
import org.apache.axis.transport.http.HTTPConstants;

class SOAPSender
{
	HTTPSender m_sender ;
	AxisServer m_axis ;

	
//-------------------------------------------------------------------
	//
	
//-------------------------------------------------------------------
	SOAPSender()
	{
		m_sender	= 	new HTTPSender() ;
		m_axis	=	new AxisServer() ;
	}
	
//-------------------------------------------------------------------
	// Send the data to setvice
	
//-------------------------------------------------------------------
	void sendData(String soapEnv, String url, boolean b100Continue)
	{
		Message responseMsg ;
		MessageContext ctx ;
		Hashtable ht ;
		System.out.println("Sending to \t\t- "+url) ;
		System.out.println("Message    \t\t - "+soapEnv) ;
	    //
	    // Create a new message context and a sender
	    //
		ctx=new MessageContext(m_axis) ;
        //
	    // Set the continue flag
	    //
        if(b100Continue){
			ht= new Hashtable() ;
			ht.put(HTTPConstants.HEADER_EXPECT,
                   HTTPConstants.HEADER_EXPECT_100_Continue) ;
			ctx.setProperty(HTTPConstants.REQUEST_HEADERS,ht) ;
        }
	    //
	    // Default to http 1.1
	    //
	    ctx.setProperty(MessageContext.HTTP_TRANSPORT_VERSION,
                        HTTPConstants.HEADER_PROTOCOL_V11) ;
		//
		// Create context
		//
		ctx.setRequestMessage(new Message(soapEnv));
		ctx.setProperty(MessageContext.TRANS_URL,url);
		//
		// Do it man
		//
        try {
            m_sender.invoke(ctx) ;
            //
            // Display the result
            //
            responseMsg=ctx.getResponseMessage() ;
            System.out.println("Got \t\t-
"+responseMsg.getSOAPPartAsString()) ;
        }
        catch (Exception e)
        {
            System.out.println("Exception - " + e.getMessage()) ;
        }
	}
	
//-------------------------------------------------------------------
	// Working example
	
//-------------------------------------------------------------------
	public void goodRequest()
	{
		String isbn ="1861007159";
        String url= "http://services.xmethods.com:80/soap/servlet/rpcrouter"
;
		String soapEnv = "<SOAP-ENV:Envelope xmlns:SOAP-ENV="+
        "\"http://schemas.xmlsoap.org/soap/envelope/\"" +
	    "xmlns:xsi=\"http://www.w3.org/1999/XMLSchema-instance\""+
        "xmlns:xsd=\"http://www.w3.org/1999/XMLSchema\">"+
	    "<SOAP-ENV:Body><ns1:getPrice
xmlns:ns1=\"urn:xmethods-BNPriceCheck\""+
        "
SOAP-ENV:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">"+
		"<isbn xsi:type=\"xsd:string\">"+isbn+"</isbn>"+
	    "</ns1:getPrice></SOAP-ENV:Body></SOAP-ENV:Envelope>" ;
		sendData(soapEnv,url,false) ;
	}

	
//-------------------------------------------------------------------
	// Bad request
	
//-------------------------------------------------------------------
	public void badRequest ()
	{
		String
url="http://ntg.webs.innerhost.com/WebEvents/events.asmx" ;
		String 	soapEnv ="<SOAP-ENV:Envelope xmlns:SOAP-ENV=\""+
        "http://schemas.xmlsoap.org/soap/envelope/\""+
 
"xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\""+
        "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
xmlns:xsd=\""+
        "http://www.w3.org/2001/XMLSchema\"><SOAP-ENV:Body><m:RegisterUser
"+
        "xmlns:m=\"http://ntg.webs.innerhost.com/webevents/\">"+
	
"<m:MailBox>bill@mirrosoft.com</m:MailBox></m:RegisterUser>"+
        "</SOAP-ENV:Body></SOAP-ENV:Envelope>" ;
		sendData(soapEnv,url,false) ;
	}
	
//-------------------------------------------------------------------
	// Horrible request
	
//-------------------------------------------------------------------
	public void horribleRequest ()
	{
		String
url="http://ntg.webs.innerhost.com/WebEvents/events.asmx" ;
        String 	soapEnv ="<SOAP-ENV:Envelope xmlns:SOAP-ENV=\""+
        "http://schemas.xmlsoap.org/soap/envelope/\""+
 
"xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\""+
        "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
xmlns:xsd=\""+
        "http://www.w3.org/2001/XMLSchema\"><SOAP-ENV:Body><m:RegisterUser
"+
        "xmlns:m=\"http://ntg.webs.innerhost.com/webevents/\">"+
	
"<m:MailBox>bill@mirrosoft.com</m:MailBox></m:RegisterUser>"+
        "</SOAP-ENV:Body></SOAP-ENV:Envelope>" ;
		sendData(soapEnv,url,true) ;
	}
}

public class BNClient {
// Driver to illustrate the invocation of the service
// This sample retrieves the price of the book "Understanding SOAP"

  public static void main(String[] args)
  {
	try {
        SOAPSender ss = new SOAPSender() ;
        //
        // Valid SOAP request
        //
        ss.goodRequest();
        //
        // This one generates an error
        //
        ss.badRequest();
        //
        // Happy waiting!
        //
        ss.horribleRequest();
       }
	catch (Exception e) {e.printStackTrace();}
  }
}
<Code End ------------------------------------------->

-----Original Message-----
From: Davanum Srinivas [mailto:dims@yahoo.com] 
Sent: Monday, December 09, 2002 7:12 PM
To: 'axis-dev@xml.apache.org'
Subject: Re: HTTP 100 Continue


Is it possible to post the "offending" code fragment? and details about the
server? (verastream?)

Thanks,
dims

--- Bhushan Khanal <bhushank@wrq.com> wrote:
> Davanum,
> 
> I am using the 1.0 version of Axis on the client side. I am not using Axis
> in the most conventional way but I suspect that this might be a general
> problem. In particular, I am using just the HTTPSender class to create and
> receive a web service call.
> 
> I also noticed that there might be a bug in the HttpSender implementation.
> Line 465 shows that the code waits for the http status before sending any
> http headers to the server.
> 
> Thanks,
> Bhushan
> 


=====
Davanum Srinivas - http://xml.apache.org/~dims/

__________________________________________________
Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
http://mailplus.yahoo.com

Mime
View raw message