I came across the same problem sometime back. I was trying to connect to a
legacy server which accepts POX messages with "text/xml" content type.
Clearly it was some imperfection of the backend server, but I did not have
control over that since it was a legacy server.

However, I was able to resolve the problem by commenting out the code block
Abid has posted. Meaning, I went on the same path and got it working. But
I'm not sure whether this breaks something that I have not tested.

Thanks,
Sadeep

On Tue, Jan 31, 2012 at 12:23 PM, Hiranya Jayathilaka
<[email protected]>wrote:

> "text/xml" is the standard content type for SOAP 1.1. So if you try to send
> a POX message with text/xml content type the formatter will change that
> back to application/xml. I don't think changing this behavior will break
> something though (fingers crossed on that :)).
>
> Thanks,
> Hiranya
>
> On Tue, Jan 31, 2012 at 12:08 AM, Abid Khan <[email protected]>
> wrote:
>
> > Hello all,
> >
> > Please look at the following code and tell me why this code is explicitly
> > changing contentType from "text/xml" to "application/xml"?
> >
> > This issue is because this kind of code in ApplicationXMLFormatter,
> >
> >      if (contentType == null) {
> >          contentType = HTTPConstants.MEDIA_TYPE_APPLICATION_XML;
> >      } else if (isSOAPContentType(contentType)) {
> >          contentType = HTTPConstants.MEDIA_TYPE_APPLICATION_XML;
> >          if (log.isDebugEnabled()) {
> >              log.debug("contentType is set incorrectly for Application
> > XML.");
> >              log.debug("It is changed to " + contentType);
> >          }
> >      }
> >
> > Along with function in
> >
> >
> >   private boolean isSOAPContentType(String contentType) {
> >       if (JavaUtils.indexOfIgnoreCase(contentType,
> > SOAP12Constants.SOAP_12_CONTENT_TYPE) > -1) {
> >           return true;
> >       }
> >       // search for "type=text/xml"
> >       else if (JavaUtils.indexOfIgnoreCase(contentType,
> >
> >  SOAP11Constants.SOAP_11_CONTENT_TYPE) > -1) {
> >           return true;
> >       }
> >       return false;
> >   }
> >
> > This code is explicitly changing the content type to "application/xml" if
> > it is "text/xml"
> >
> > I would like to know if changing this code would have any negative
> impacts.
> >
> > Regards,
> > Abid
> >
> > -----Original Message-----
> > From: Abid Khan
> > Sent: Friday, January 27, 2012 9:34 AM
> > To: '[email protected]'
> > Subject: RE: Help needed for endpoint level content type.
> >
> > Hello all,
> >
> > I have tried all options, I do need to change the content-type to
> > "text/xml". And I do neet a quick resolution to this.
> >
> > Can anyone please point me to right direction.
> >
> > Thanks in advance,
> > Abid
> >
> >
> >
> >
> >
> > -----Original Message-----
> > From: Abid Khan
> > Sent: Tuesday, January 24, 2012 4:02 PM
> > To: [email protected]
> > Subject: RE: Help needed for endpoint level content type.
> >
> > Hello Sadeep,
> >
> > I tried this, and several others. It look either synapse or axis2 is
> > completely ignoring those properties. No matter what I set I always get
> > "application/xml".
> >
> > So there may be a bug somewhere or this is by design. The content type
> are
> > always posted as "application/xml"
> >
> >
> > -----Original Message-----
> > From: Sadeep Jayasumana [mailto:[email protected]]
> > Sent: Tuesday, January 24, 2012 11:23 AM
> > To: [email protected]
> > Subject: Re: Help needed for endpoint level content type.
> >
> > Hi,
> >
> > You can set these properties conditionally within your CBR logic. Please
> > check whether it works for you.
> >
> > Eg:
> > <proxy name="CBRProxy">
> >    <target>
> >        <inSequence>
> >          <switch source="//m0:getQuote/m0:request/m0:symbol" xmlns:m0="
> > http://services.samples";>
> >              <case regex="IBM">
> >                  <!-- Send with text/xml content type to endpoint 1 -->
> >                  <property name="messageType" value="text/xml"
> > scope="axis2"/>
> >                  <property name="ContentType" value="text/xml"
> > scope="axis2"/>
> >                  <send>
> >                      <endpoint>
> >                          <address uri="http://localhost:9000/endpoint1";
> />
> >                      </endpoint>
> >                  </send>
> >              </case>
> >              <case regex="MSFT">
> >                  <!-- Send with application/xml content type to endpoint
> 2
> > -->
> >                  <property name="messageType" value="application/xml"
> > scope="axis2"/>
> >                  <property name="ContentType" value="application/xml"
> > scope="axis2"/>
> >                  <send>
> >                      <endpoint>
> >                          <address uri="http://localhost:9000/endpoint2";
> />
> >                      </endpoint>
> >                  </send>
> >              </case>
> >           </switch>
> >       </inSequence>
> >   </target>
> > </proxy>
> >
> > Thanks,
> > Sadeep
> >
> > On Tue, Jan 24, 2012 at 9:14 PM, Abid Khan <[email protected]>
> wrote:
> >
> > > Hello Sadeep,
> > >
> > > Thanks for the quicker response.
> > >
> > > I actually knew this approach, but my problem is multiple application
> > send
> > > request to same proxy. That same proxy is delivering message (using
> > content
> > > based routing) to different endpoints.
> > >
> > > One of those endpoint expects "Content-Type=text/xml", where as rest of
> > > them expect "Content-Type=application/xml".
> > >
> > > Having said that I need something in the endpoint not in the proxy.
> > >
> > > Thanks,
> > > Abid
> > >
> > >
> > >
> > > -----Original Message-----
> > > From: Sadeep Jayasumana [mailto:[email protected]]
> > > Sent: Tuesday, January 24, 2012 12:52 AM
> > > To: [email protected]
> > > Subject: Re: Help needed for endpoint level content type.
> > >
> > > Hi,
> > >
> > > You can force the content type while sending a message out using
> > > "messageType" and "ContentType" Axis2 level properties. Please check
> > > whether this works for your scenario. This might not work if the
> message
> > > content is not compatible with the formatter associated to the content
> > type
> > > you are forcibly setting.
> > >
> > >     ..
> > >     ..
> > >     <property name="messageType" value="text/xml" scope="axis2"/>
> > >     <property name="ContentType" value="text/xml" scope="axis2"/>
> > >     <send>
> > >        <endpoint>
> > >            <address uri="http://localhost:9000/endpoint1"; />
> > >        </endpoint>
> > >     </send>
> > >
> > > AND
> > >
> > >     ..
> > >     ..
> > >     <property name="messageType" value="application/xml"
> scope="axis2"/>
> > >     <property name="ContentType" value="application/xml"
> scope="axis2"/>
> > >     <send>
> > >        <endpoint>
> > >            <address uri="http://localhost:9000/endpoint2"; />
> > >        </endpoint>
> > >     </send>
> > >
> > > Thanks,
> > > Sadeep
> > >
> > > On Tue, Jan 24, 2012 at 9:47 AM, Hiranya Jayathilaka
> > > <[email protected]>wrote:
> > >
> > > > I believe these endpoints are being invoked through some proxy
> service.
> > > If
> > > > so what is the content type of the requests sent to the proxy
> service?
> > > >
> > > > Thanks,
> > > > Hiranya
> > > >
> > > > On Tue, Jan 24, 2012 at 7:03 AM, Abid Khan <[email protected]>
> > > wrote:
> > > >
> > > > > Hello all,
> > > > >
> > > > > Please help me in following scenario. (I am using synapse 1.2)
> > > > >
> > > > > I have two different endpoint, the application on one endpoint
> > accepts
> > > > > "Content-Type=application/xml", and second application on the other
> > > > > endpoint accepts "Content-Type=text/xml".
> > > > >
> > > > > Those application are external application and are running for
> > several
> > > > > years, is there any way I can configure Synapse to send content
> type
> > > > > properly to their respective endpoint.
> > > > >
> > > > > A prompt response will be much appreciated.
> > > > >
> > > > > Regards,
> > > > > Abid
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > > Hiranya Jayathilaka
> > > > Associate Technical Lead;
> > > > WSO2 Inc.;  http://wso2.org
> > > > E-mail: [email protected];  Mobile: +94 77 633 3491
> > > > Blog: http://techfeast-hiranya.blogspot.com
> > > >
> > >
> > >
> > >
> > > --
> > >
> > > Sadeep Jayasumana****
> > >
> > > Email: [email protected]****
> > >
> > > Phone: +94-77-2266507
> > >
> >
> >
> >
> > --
> >
> > Sadeep Jayasumana****
> >
> > Email: [email protected]****
> >
> > Phone: +94-77-2266507
> >
>
>
>
> --
> Hiranya Jayathilaka
> Associate Technical Lead;
> WSO2 Inc.;  http://wso2.org
> E-mail: [email protected];  Mobile: +94 77 633 3491
> Blog: http://techfeast-hiranya.blogspot.com
>



-- 

Sadeep Jayasumana****

Email: [email protected]****

Phone: +94-77-2266507

Reply via email to