HttpClient通过GET和POST获取网页内容
最简单的HTTP客户端,用来演示通过GET或者POST方式访问某个页面
/**
* 中国银行支付网关---银行回调的接口
* @svncode svn://10.210.71.10/sinapay_bank/src/java/cn/com/sina
* @package cn.com.sina.pay.Bank.BOC
* @author yuchao1@staff.sina.com.cn
* @date 20101014
* @access limited by password
* @reference cn.com.sina.pay.ICBC
*
*/
import java.io.*;
import java.util.*;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.Namespace;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.xml.sax.InputSource; import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.*;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
/**
* 最简单的HTTP客户端,用来演示通过GET或者POST方式访问某个页面
* @author yuchao
*/
public class HttpClient1{
public static void main(String[] args) throws IOException
{
String merchantNo = "104110053004253";
String orderNo = "101023416806";
String signData = "SDJFALSF"; HttpClient client = new HttpClient(); //使用POST方法
PostMethod postMethod = new PostMethod("https://ebspay.boc.cn/PGWPortal/QueryOrder.do");
/**
* 使用POST方式提交数据
*/
NameValuePair[] orderInfo = {new NameValuePair("merchantNo",merchantNo),new NameValuePair("orderNos",orderNo),
new NameValuePair("signData",signData),};
postMethod.setRequestBody(orderInfo); client.executeMethod(postMethod); int code = postMethod.getStatusCode();
if (code == HttpStatus.SC_OK){
String info = null;
info = new String(postMethod.getResponseBodyAsString());
} /**
* 打印服务器返回的状态
*/
System.out.println("the post return value"+postMethod.getStatusLine());
/**
* 打印结果页面
*/
String response = new String(postMethod.getResponseBodyAsString().getBytes("UTF-8"));
/**
* 打印返回的信息
*/
System.out.println("the getBytes() xml is:"+response);
//打印返回的信息
String resCode = postMethod.getResponseBodyAsString();
System.out.println("the is my other xml:"+resCode);
//释放连接
postMethod.releaseConnection(); StringReader read = new StringReader(resCode);
InputSource source = new InputSource(read);
SAXBuilder sb = new SAXBuilder(); try{
Document doc = sb.build(source);
Element root = doc.getRootElement(); System.out.println("the getName is:"+root.getName());
List jiedian = root.getChildren();
//获得XML中的命名空间(XML中未定义可不写)
Namespace ns = root.getNamespace();
Element et = null;
List orderList = null; for (int i=0;i<jiedian.size();i++)
{
et = (Element)jiedian.get(i); if(et.getName().equals("header")){
System.out.println(et.getChild("merchantNo", ns).getText());
System.out.println(et.getChild("exception", ns).getText());
} if(et.getName().equals("body")){
orderList = et.getChildren();
System.out.println(et.getChild("orderTrans", ns).getChild("orderStatus").getText());
} }
for (int i=0;i<orderList.size();i++)
{
et = (Element)orderList.get(i); if(et.getName().equals("orderTrans")){
System.out.println(et.getChild("payTime", ns).getText());
} }
}catch(JDOMException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
}
}
HttpClient通过GET和POST获取网页内容的更多相关文章
- 基于HttpClient、Jsoup的爬虫获取指定网页内容
不断尝试,发现越来越多有趣的东西,刚刚接触Jsoup感觉比正则表达式用起来方便,但也有局限只适用HTML的解析. 不能尝试运用到四则运算中(工作室刚开始联系的小程序). 在原来写的HttpClient ...
- 基于apache —HttpClient的小爬虫获取网页内容
今天(17-03-31)忙了一下午研究webmagic,发现自己还太年轻,对于这样难度的框架(类库) 还是难以接受,还是从基础开始吧,因为相对基础的东西教程相多一些,于是乎我找了apache其下的 H ...
- 使用Jsoup获取网页内容超时设置
使用Jsoup获取网页内容超时设置 最近使用Jsoup来抓取网页,并对网页进行解析,发现很好用.在抓取过程中遇到一个问题,有些页面总是报Timeout异常,开始想是不是被抓取网站对IP进行了限制,后来 ...
- 【C#】获取网页内容及HTML解析器HtmlAgilityPack的使用
最近经常需要下载一些东西,而这个下载地址又会经过层层跳转,每个页面上都有很多广告,烦不胜烦,所以做了一个一键获得最终下载地址的小工具.使用C#,来获取网页内容,然后通过HtmlAgilityPack获 ...
- C#获取网页内容的三种方式
C#通常有三种方法获取网页内容,使用WebClient.WebBrowser或者HttpWebRequest/HttpWebResponse... 方法一:使用WebClient (引用自:http: ...
- C#获取网页内容 (WebClient、WebBrowser和HttpWebRequest/HttpWebResponse)
获取网页数据有很多种方式.在这里主要讲述通过WebClient.WebBrowser和HttpWebRequest/HttpWebResponse三种方式获取网页内容. 这里获取的是包括网页的所有信息 ...
- 定义一个方法get_page(url),url参数是需要获取网页内容的网址,返回网页的内容。提示(可以了解python的urllib模块)
定义一个方法get_page(url),url参数是需要获取网页内容的网址,返回网页的内容.提示(可以了解python的urllib模块) import urllib.request def get_ ...
- C#获取网页内容的三种方式(转)
搜索网络,发现C#通常有三种方法获取网页内容,使用WebClient.WebBrowser或者HttpWebRequest/HttpWebResponse... 方法一:使用WebClient (引用 ...
- 使用selenium和phantomJS浏览器获取网页内容的小演示
# 使用selenium和phantomJS浏览器获取网页内容的小演示 # 导入包 from selenium import webdriver # 使用selenium库里的webdriver方法调 ...
随机推荐
- python 数据结构-元组tuple
tuple0=() #空 tuple1="wo", #元组中包括单个元素用, tuple2="monkey","cat","chi ...
- __int64 与long long 的区别 分类: Brush Mode 2014-08-14 10:22 64人阅读 评论(0) 收藏
//为了和DSP兼容,TSint64和TUint64设置成TSint40和TUint40一样的数 //结果VC中还是认为是32位的,显然不合适 //typedef signed long int ...
- PHP命令行模式基本介绍
首先要保证php在cli模式下可用,php –v会返回PHP的版本号. [gaojian3@log001 ~]$ php -v PHP (cli) (built: Aug ::) Copyrigh ...
- jQuery .tmpl() 用法
动态请求数据来更新页面是现在非常常用的方法,比如博客评论的分页动态加载,微博的滚动加载和定时请求加载等. 这些情况下,动态请求返回的数据一般不是已拼好的 HTML 就是 JSON 或 XML,总之不在 ...
- JavaScript中this的工作原理以及注意事项
在JavaScript中,this 的概念比较复杂.除了在面向对象编程中,this 还是随处可用的.这篇文章介绍了this 的工作原理,它会造成什么样的问题以及this 的相关例子. 要根据this ...
- wifidog源码分析 - 用户连接过程
引言 之前的文章已经描述wifidog大概的一个工作流程,这里我们具体说说wifidog是怎么把一个新用户重定向到认证服务器中的,它又是怎么对一个已认证的用户实行放行操作的.我们已经知道wifidog ...
- 云计算中iaas、paas、saas的区别和联系
概念: iass : Infrastructure(基础设施)-as-a-Service, paas : Platform(平台)-as-a-Service, saas : Software(软件)- ...
- Extjs文本输入域
var form = Ext.create('Ext.form.Panel', { renderTo: Ext.getBody(), frame: tr ...
- 如何使用 Docker 部署一个基于 Play Framework 的 Scala Web 应用?
本文作者 Jacek Laskowski 拥有近20年的应用程序开发经验,现 CodiLime 的软件开发团队 Leader,曾从 IBM 取得多种资格认证.在这篇博文中,Jacek 分享了 Wars ...
- ASP.NET 将Excel导入数据库
将Excel导入数据库大致流程: Excel数据->DataSet->数据库 需要做的准备:1.FileUpload控件一个,按钮一个,如果需要即时显示那么GridView或DataGr ...