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