今天需要post请求并且得到php返回的xml数据
这里我利用dom4j,因为返回的数据我需要组成xml
public class DanjiudianchakanTag extends OrderBaseTag{ @Override public Document dataToXml() { String html=""; String st=request.getParameter("st"); String et=request.getParameter("et"); String PropertyID=request.getParameter("PropertyID"); String str="http://192.168.10.218/search/singleHotel.php?wc=000&hotelname="+PropertyID+"&indate="+st+"&outdate="+et; System.out.println(str); Document doc = Dom4jHelp.CreateDocument(); response.setContentType("text/html;charset=utf-8"); //利用HttpClient进行请求 HttpClient httpClient = new HttpClient(); GetMethod getMethod = new GetMethod(str); getMethod.addRequestHeader("Content","text/html,charset=utf-8"); try{ int statusCode = httpClient.executeMethod(getMethod); if(statusCode!=HttpStatus.SC_OK){ System.err.println("Method failed: "+ getMethod.getStatusLine()); } // 读取内容 byte[] responseBody = getMethod.getResponseBody(); // 处理内容 html = new String(responseBody); //返回的信息 System.out.println(html); SAXReader saxReader = new SAXReader(); //转化为doc对象 doc = saxReader.read(new ByteArrayInputStream(html.getBytes())); } catch(Exception e){ System.err.println("页面无法访问"); } getMethod.releaseConnection(); try { MessageToXML.SystemWriter(doc); } catch (Exception e) { e.printStackTrace(); } return doc; } }
接下来:
利用Httpclient进行post 提交数据。
首先建立Myhttpclient
public class MyHttpClient { public String requestPHP(String url,String wc,String order)throws IOException { HttpClient client = new HttpClient(); //服务器地址 client.getHostConfiguration().setHost("192.168.10.218", 80, "http"); //post 参数 HttpMethod method = getPostMethod(url,wc,order);//使用POST方式提交数据 method.addRequestHeader("Content","text/html,charset=gb2312"); // HttpMethod method = getGetMethod(url,wc,order);//使用get方式提交数据 client.executeMethod(method); System.out.println("----------"+method.getStatusLine()); //打印结果页面 String response = new String(method.getResponseBodyAsString().getBytes("gb2312")); //打印返回的信息 System.out.println("---------"+response); method.releaseConnection(); return response; } /** *//** * 使用GET方式提交数据 * */ private static HttpMethod getGetMethod(){ return new GetMethod("/search/hotelorder.php"); } private static HttpMethod getGetMethod(String url,String wc,String order){ return new GetMethod("/search/hotelorder.php?wc=000&order="+order); } /** *//** * 使用POST方式提交数据 * @return */ private static HttpMethod getPostMethod(){ PostMethod post = new PostMethod("/search/hotelorder.php"); NameValuePair simcard = new NameValuePair("simcard","1330227"); post.setRequestBody(new NameValuePair[] { simcard}); return post; } private static HttpMethod getPostMethod(String url,String wc,String order){ PostMethod post = new PostMethod(url); NameValuePair pwc = new NameValuePair("wc",wc); NameValuePair porder = new NameValuePair("order",order); post.setRequestBody(new NameValuePair[] {pwc,porder}); return post; } }
如何调用:
String url = "/search/hotelorder.php"; String wc = "000"; MyHttpClient mc = new MyHttpClient(); try { String rphp = mc.requestPHP(url,wc,order); doc = DocumentHelper.parseText(rphp); Element r = doc.getRootElement(); Dom4jHelp.getNextItem(r,"Internet",Internet);//宽带 Dom4jHelp.getNextItem(r,"BedType",BedType);//床型 } catch (Exception e1) { e1.printStackTrace(); }
这样就可以通过上MyHttpClient进行post提交。
主要jar:commons-httpclient-3.1.jar