You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by laolong <le...@sina.com> on 2009/06/11 08:58:26 UTC
HTTP Post method issue when use http:consumer (Jetty issue?)
Hi,
There is a http component to receive HTTP Post data and forward the data
to another application, request.getParameter("testparam") is empty when try
to get the POST data from HttpServletRequest(in HTTPMarshaler class), I used
HTML form and Java HTTP client to test but both failed. I'm sure the method
is POST.
It works when change to GET method.
is it a bug of http component or Jetty? or something I need to config?
Please advise.
<http:provider service="tns:ProviderService"
endpoint="ep"
locationURI="http://localhost:8000/test/price" >
</http:provider>
<http:consumer service="tns:ConsumerService"
endpoint="jbi"
defaultMep="http://www.w3.org/2004/08/wsdl/in-out"
locationURI="http://0.0.0.0:8199/price"
targetService="tns:ProviderService"
marshaler="#marshaler" />
<bean id="marshaler" class="demo.HTTPMarshaler" />
public class HTTPMarshaler extends DefaultHttpConsumerMarshaler {
private SourceTransformer sourceTransformer = new SourceTransformer();
public MessageExchange createExchange(HttpServletRequest request,
ComponentContext context) throws Exception {
System.out.println("parm:"+getParameterList(request));
MessageExchange me = context.getDeliveryChannel()
.createExchangeFactory().createExchange(getDefaultMep());
NormalizedMessage in = me.createMessage();
try{
in.setContent(new StringSource(request.getParameter("testparam")));
}catch(Exception e){
e.printStackTrace();
in.setContent(new StringSource(getInputString(request)));
}
me.setMessage(in, "in");
System.out.println("end createExchange");
return me;
}
public static String getParameterList(HttpServletRequest request){
String parmStr="<?xml version=\"1.0\"?><ParameterList>\n";
java.util.Enumeration en=request.getParameterNames();
int i=0;
while (en.hasMoreElements()){
parmStr+="<Parameter index=\""+(++i)+"\">";
String name=en.nextElement().toString();
parmStr+="<Name>"+name+"</Name>";
parmStr += "<Value><!-- " +
request.getParameter(name) +
"--></Value>";
parmStr+="</Parameter>"+"\n";
}
en=request.getAttributeNames();
while (en.hasMoreElements()){
parmStr+="<Attribute index=\""+(++i)+"\">";
String name=en.nextElement().toString();
parmStr+="<Name>"+name+"</Name>";
parmStr += "<Value><!-- " +
request.getAttribute(name) +
"--></Value>";
parmStr+="</Attribute>"+"\n";
}
en=request.getHeaderNames();
while (en.hasMoreElements()){
parmStr+="<Header index=\""+(++i)+"\">";
String name=en.nextElement().toString();
parmStr+="<Name>"+name+"</Name>";
parmStr += "<Value><!-- " +
request.getHeader(name) +
"--></Value>";
parmStr+="</Header>"+"\n";
}
parmStr+="</ParameterList>"+"\n";
return parmStr;
}
--
View this message in context: http://www.nabble.com/HTTP-Post-method-issue-when-use-http%3Aconsumer-%28Jetty-issue-%29-tp23976283p23976283.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.
Re: HTTP Post method issue when use http:consumer (Jetty issue?)
Posted by laolong <le...@sina.com>.
This problem has been fixed, just need to add a slash(/) at the end of
request url, for example, http://localhost:8192/testurl/
Jean-Baptiste Onofré wrote:
>
> First, I take a look on your EJB issue. I will be able to take a look on
> this issue after :)
>
> Regards
> JB
>
> laolong wrote:
>>
>> Could someone help on this issue?
>>
>>
>> laolong wrote:
>>> Hi,
>>>
>>> There is a http component to receive HTTP Post data and forward the
>>> data to another application, request.getParameter("testparam") is empty
>>> when try to get the POST data from HttpServletRequest(in HTTPMarshaler
>>> class), I used HTML form and Java HTTP client to test but both failed.
>>> I'm
>>> sure the method is POST.
>>> It works when change to GET method.
>>> is it a bug of http component or Jetty? or something I need to
>>> config?
>>>
>>> Please advise.
>>>
>>>
>>> <http:provider service="tns:ProviderService"
>>> endpoint="ep"
>>> locationURI="http://localhost:8000/test/price" >
>>> </http:provider>
>>>
>>> <http:consumer service="tns:ConsumerService"
>>> endpoint="jbi"
>>> defaultMep="http://www.w3.org/2004/08/wsdl/in-out"
>>> locationURI="http://0.0.0.0:8199/price"
>>> targetService="tns:ProviderService"
>>> marshaler="#marshaler" />
>>> <bean id="marshaler" class="demo.HTTPMarshaler" />
>>>
>>>
>>> public class HTTPMarshaler extends DefaultHttpConsumerMarshaler {
>>>
>>> private SourceTransformer sourceTransformer = new SourceTransformer();
>>>
>>> public MessageExchange createExchange(HttpServletRequest request,
>>> ComponentContext context) throws Exception {
>>>
>>> System.out.println("parm:"+getParameterList(request));
>>>
>>> MessageExchange me = context.getDeliveryChannel()
>>> .createExchangeFactory().createExchange(getDefaultMep());
>>> NormalizedMessage in = me.createMessage();
>>> try{
>>> in.setContent(new StringSource(request.getParameter("testparam")));
>>> }catch(Exception e){
>>> e.printStackTrace();
>>> in.setContent(new StringSource(getInputString(request)));
>>> }
>>> me.setMessage(in, "in");
>>> System.out.println("end createExchange");
>>> return me;
>>> }
>>> public static String getParameterList(HttpServletRequest request){
>>> String parmStr="<?xml version=\"1.0\"?><ParameterList>\n";
>>> java.util.Enumeration en=request.getParameterNames();
>>> int i=0;
>>> while (en.hasMoreElements()){
>>> parmStr+="<Parameter index=\""+(++i)+"\">";
>>> String name=en.nextElement().toString();
>>> parmStr+="<Name>"+name+"</Name>";
>>> parmStr += "<Value><!-- " +
>>> request.getParameter(name) +
>>> "--></Value>";
>>> parmStr+="</Parameter>"+"\n";
>>> }
>>> en=request.getAttributeNames();
>>> while (en.hasMoreElements()){
>>> parmStr+="<Attribute index=\""+(++i)+"\">";
>>> String name=en.nextElement().toString();
>>> parmStr+="<Name>"+name+"</Name>";
>>> parmStr += "<Value><!-- " +
>>> request.getAttribute(name) +
>>> "--></Value>";
>>> parmStr+="</Attribute>"+"\n";
>>> }
>>> en=request.getHeaderNames();
>>> while (en.hasMoreElements()){
>>> parmStr+="<Header index=\""+(++i)+"\">";
>>> String name=en.nextElement().toString();
>>> parmStr+="<Name>"+name+"</Name>";
>>> parmStr += "<Value><!-- " +
>>> request.getHeader(name) +
>>> "--></Value>";
>>> parmStr+="</Header>"+"\n";
>>> }
>>> parmStr+="</ParameterList>"+"\n";
>>> return parmStr;
>>> }
>>>
>>
>
>
--
View this message in context: http://www.nabble.com/HTTP-Post-method-issue-when-use-http%3Aconsumer-%28Jetty-issue-%29-tp23976283p23998663.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.
Re: HTTP Post method issue when use http:consumer (Jetty issue?)
Posted by Jean-Baptiste Onofré <jb...@nanthrax.net>.
First, I take a look on your EJB issue. I will be able to take a look on
this issue after :)
Regards
JB
laolong wrote:
>
> Could someone help on this issue?
>
>
> laolong wrote:
>> Hi,
>>
>> There is a http component to receive HTTP Post data and forward the
>> data to another application, request.getParameter("testparam") is empty
>> when try to get the POST data from HttpServletRequest(in HTTPMarshaler
>> class), I used HTML form and Java HTTP client to test but both failed. I'm
>> sure the method is POST.
>> It works when change to GET method.
>> is it a bug of http component or Jetty? or something I need to config?
>>
>> Please advise.
>>
>>
>> <http:provider service="tns:ProviderService"
>> endpoint="ep"
>> locationURI="http://localhost:8000/test/price" >
>> </http:provider>
>>
>> <http:consumer service="tns:ConsumerService"
>> endpoint="jbi"
>> defaultMep="http://www.w3.org/2004/08/wsdl/in-out"
>> locationURI="http://0.0.0.0:8199/price"
>> targetService="tns:ProviderService"
>> marshaler="#marshaler" />
>> <bean id="marshaler" class="demo.HTTPMarshaler" />
>>
>>
>> public class HTTPMarshaler extends DefaultHttpConsumerMarshaler {
>>
>> private SourceTransformer sourceTransformer = new SourceTransformer();
>>
>> public MessageExchange createExchange(HttpServletRequest request,
>> ComponentContext context) throws Exception {
>>
>> System.out.println("parm:"+getParameterList(request));
>>
>> MessageExchange me = context.getDeliveryChannel()
>> .createExchangeFactory().createExchange(getDefaultMep());
>> NormalizedMessage in = me.createMessage();
>> try{
>> in.setContent(new StringSource(request.getParameter("testparam")));
>> }catch(Exception e){
>> e.printStackTrace();
>> in.setContent(new StringSource(getInputString(request)));
>> }
>> me.setMessage(in, "in");
>> System.out.println("end createExchange");
>> return me;
>> }
>> public static String getParameterList(HttpServletRequest request){
>> String parmStr="<?xml version=\"1.0\"?><ParameterList>\n";
>> java.util.Enumeration en=request.getParameterNames();
>> int i=0;
>> while (en.hasMoreElements()){
>> parmStr+="<Parameter index=\""+(++i)+"\">";
>> String name=en.nextElement().toString();
>> parmStr+="<Name>"+name+"</Name>";
>> parmStr += "<Value><!-- " +
>> request.getParameter(name) +
>> "--></Value>";
>> parmStr+="</Parameter>"+"\n";
>> }
>> en=request.getAttributeNames();
>> while (en.hasMoreElements()){
>> parmStr+="<Attribute index=\""+(++i)+"\">";
>> String name=en.nextElement().toString();
>> parmStr+="<Name>"+name+"</Name>";
>> parmStr += "<Value><!-- " +
>> request.getAttribute(name) +
>> "--></Value>";
>> parmStr+="</Attribute>"+"\n";
>> }
>> en=request.getHeaderNames();
>> while (en.hasMoreElements()){
>> parmStr+="<Header index=\""+(++i)+"\">";
>> String name=en.nextElement().toString();
>> parmStr+="<Name>"+name+"</Name>";
>> parmStr += "<Value><!-- " +
>> request.getHeader(name) +
>> "--></Value>";
>> parmStr+="</Header>"+"\n";
>> }
>> parmStr+="</ParameterList>"+"\n";
>> return parmStr;
>> }
>>
>
Re: HTTP Post method issue when use http:consumer (Jetty issue?)
Posted by laolong <le...@sina.com>.
Could someone help on this issue?
laolong wrote:
>
> Hi,
>
> There is a http component to receive HTTP Post data and forward the
> data to another application, request.getParameter("testparam") is empty
> when try to get the POST data from HttpServletRequest(in HTTPMarshaler
> class), I used HTML form and Java HTTP client to test but both failed. I'm
> sure the method is POST.
> It works when change to GET method.
> is it a bug of http component or Jetty? or something I need to config?
>
> Please advise.
>
>
> <http:provider service="tns:ProviderService"
> endpoint="ep"
> locationURI="http://localhost:8000/test/price" >
> </http:provider>
>
> <http:consumer service="tns:ConsumerService"
> endpoint="jbi"
> defaultMep="http://www.w3.org/2004/08/wsdl/in-out"
> locationURI="http://0.0.0.0:8199/price"
> targetService="tns:ProviderService"
> marshaler="#marshaler" />
> <bean id="marshaler" class="demo.HTTPMarshaler" />
>
>
> public class HTTPMarshaler extends DefaultHttpConsumerMarshaler {
>
> private SourceTransformer sourceTransformer = new SourceTransformer();
>
> public MessageExchange createExchange(HttpServletRequest request,
> ComponentContext context) throws Exception {
>
> System.out.println("parm:"+getParameterList(request));
>
> MessageExchange me = context.getDeliveryChannel()
> .createExchangeFactory().createExchange(getDefaultMep());
> NormalizedMessage in = me.createMessage();
> try{
> in.setContent(new StringSource(request.getParameter("testparam")));
> }catch(Exception e){
> e.printStackTrace();
> in.setContent(new StringSource(getInputString(request)));
> }
> me.setMessage(in, "in");
> System.out.println("end createExchange");
> return me;
> }
> public static String getParameterList(HttpServletRequest request){
> String parmStr="<?xml version=\"1.0\"?><ParameterList>\n";
> java.util.Enumeration en=request.getParameterNames();
> int i=0;
> while (en.hasMoreElements()){
> parmStr+="<Parameter index=\""+(++i)+"\">";
> String name=en.nextElement().toString();
> parmStr+="<Name>"+name+"</Name>";
> parmStr += "<Value><!-- " +
> request.getParameter(name) +
> "--></Value>";
> parmStr+="</Parameter>"+"\n";
> }
> en=request.getAttributeNames();
> while (en.hasMoreElements()){
> parmStr+="<Attribute index=\""+(++i)+"\">";
> String name=en.nextElement().toString();
> parmStr+="<Name>"+name+"</Name>";
> parmStr += "<Value><!-- " +
> request.getAttribute(name) +
> "--></Value>";
> parmStr+="</Attribute>"+"\n";
> }
> en=request.getHeaderNames();
> while (en.hasMoreElements()){
> parmStr+="<Header index=\""+(++i)+"\">";
> String name=en.nextElement().toString();
> parmStr+="<Name>"+name+"</Name>";
> parmStr += "<Value><!-- " +
> request.getHeader(name) +
> "--></Value>";
> parmStr+="</Header>"+"\n";
> }
> parmStr+="</ParameterList>"+"\n";
> return parmStr;
> }
>
--
View this message in context: http://www.nabble.com/HTTP-Post-method-issue-when-use-http%3Aconsumer-%28Jetty-issue-%29-tp23976283p23980193.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.