最近,项目中开发中,遇到需要查询酒店信息这个功能模块!!酒店信息是一个专门的服务商提供的,查询以及接收酒店信息都是以XML形式!!现在,我项目是jsp+Struts+Hibernate 开发的!!我不知道jsp form表单数据如何转换成提供商的那种xml形式继而发送请求!!发送请求xml:
<OTRequest>
<TransactionName>HotelSearch</TransactionName>
<Header>
<SessionID>1111111111</SessionID>
<!--假设登陆指令返回的sessionID为1111111111-->
<Invoker>HBE</Invoker>
</Header>
<IdentityInfo>
<OfficeID>请输入申请ID</OfficeID>
<UserID></UserID>
<Password>请输入密码</Password>
</IdentityInfo>
<ScrollingInfo>
<DisplayReq>30</DisplayReq>
<PageItems>10</PageItems>
<PageNo>1</PageNo>
</ScrollingInfo>
<SearchConditions>
<GDS></GDS>
<CheckInDate>20070901</CheckInDate>
<CheckOutDate>20070903</CheckOutDate>
<PropertyDetail>
<CityCode>PEK</CityCode>
<Supplier></Supplier>
<PropertyName/>
<Transportation/>
<PorName/>
<CityRegion/>
<AreaCode/>
<RankCode/>
</PropertyDetail>
<RateDetail>
<PaymentType/>
<Currency></Currency>
<RateMin></RateMin>
<RateMax></RateMax>
<RateCode/>
</RateDetail>
<RoomDetail></RoomDetail>
</SearchConditions>
</OTRequest>接收xml:
  <?xml version="1.0" encoding="GB2312" ?> 
- <OTResponse>
  <TransactionName>Any</TransactionName> 
- <ErrorInfo>
  <Code>-1</Code> 
  <Description>....</Description> 
  </ErrorInfo>
  <Data /> 
  </OTResponse>
java类:
import org.apache.commons.httpclient.*;import org.apache.commons.httpclient.methods.*;…………         try {          req = new String(req.getBytes("GB2312"), "ISO8859_1");        }        catch (UnsupportedEncodingException ex) {          ex.printStackTrace();        }//纠正输入乱码问题,本例中开发环境使用了GB2312编码 org.apache.commons.httpclient.HttpClient client = new org.apache.commons.httpclient.HttpClient();String strUrl = " http://202.103.129.25/HBE/servlet/tdplogicbookingcontroller";org.apache.commons.httpclient.methods.PostMethod method = new org.apache.commons.httpclient.methods.PostMethod(strUrl);method.setParameter("request", req);org.apache.commons.httpclient.DefaultMethodRetryHandler retryhandler = new org.apache.commons.httpclient.DefaultMethodRetryHandler();retryhandler.setRequestSentRetryEnabled(false);retryhandler.setRetryCount(3);method.setMethodRetryHandler(retryhandler);client.executeMethod(method); InputStream is = method.getResponseBodyAsStream();BufferedReader reader = new BufferedReader(new InputStreamReader(is,"GB2312")); StringBuffer s = new StringBuffer();String tmp;while((tmp=reader.readLine())!=null) {   s.append(tmp);}req为以XML形式拼装的请求字符串
不知道jsp里form表单数据如何拼装成xml 存在request里!!谢谢!!谢谢!!!!