httpclient请求php

今天需要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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值