向指定URL发送GET方法获取资源,编码问题。 Rest风格
http编码。今天遇到获取网页上的数据,用HTTP的GET请求访问url获取资源,网上有相应的方法。以前一直不知道什么事rest风格,现在我想就是开一个Controller,然后使人可以调用你的后台代码。((value=“xxx”))
@Controller
public class getWebDataController {
public List<JSONObject> roadlist = new ArrayList<JSONObject>();
public List<JSONObject> jamlist = new ArrayList<JSONObject>();
public List<JSONObject> numlist = new ArrayList<JSONObject>();
/*public getWebDataController(){
System.out.println("初始化getWebDataController");
}*/
@Autowired
private InsertAllDataService service;
@ResponseBody
@RequestMapping(value="/getWebData.htm", produces = "text/html;charset=utf-8")
public String getWebData(HttpServletRequest request, HttpServletResponse response)
throws ParserConfigurationException, SAXException, IOException, DocumentException{
this.setAccessHeader(response);
roadlist.clear();
jamlist.clear();
numlist.clear();
/*String url1 = com.enjoyor.soa.traffic.server.ubms.util.SpringReader.getProperty("url1")*/
String url1 = "http://www.hzjtydzs.com/web/xmlsvc/currentRoadSpeed.aspx?rank=%E7%BB%86%E7%B2%92%E5%BA%A6&order=asc&areaid=%E6%A0%B8%E5%BF%83%E5%8C%BA";
String url2 = "http://www.hzjtydzs.com/web/xmlsvc/currentNumberData.aspx";
String url3 = "http://www.hzjtydzs.com/web/xmlsvc/currentJamIndex.aspx";
String returnString = "";
String[] urls = new String[] { url1, url2, url3 };
getNode getnode = new getNode();
for (int i = 0; i < urls.length; i++) {
String url = urls[i];
String param = "";
String fileLac = HttpRequest.sendGet(url, param);
//出错位置,开始由于是在tomcat服务器下,没有办法调试,只能通过日志和打印收集信息,发现是DocumentHelper.parseText(fileLac);这句报错,于是开始在这里修改,但是很快发现,Helper文件是别人发布好的,无法修改,那么只能在此之前处理。这里是我没有想到的,思维在此出现阻碍,我没有进去HttpRequest去看,我以为这个也是发布好的类,没想到在此修改。是的,错误出现在parseText那里,但是真正的根源,问题的本质却是在前面一句代码里。
Document doc = DocumentHelper.parseText(fileLac);
Element rootElt = doc.getRootElement(); // 获取根节点
// getNode.getNodes(rootElt,"");
if (url.indexOf("NumberData") > 0) {
numlist = (List<JSONObject>)getnode.getNodes(rootElt, "").get("numlist");// 从根节点开始遍历所有节点
}
if (url.indexOf("RoadSpeed") > 0) {
roadlist = (List<JSONObject>)getnode.getNodes(rootElt, "").get("roadlist");
}
if (url.indexOf("JamIndex") > 0) {
jamlist = (List<JSONObject>)getnode.getNodes(rootElt, "").get("jamlist");
}
}
if(numlist.size()>0){
returnString += numlist.toString();
}
if(roadlist.size()>0){
returnString += roadlist.toString();
}
if(jamlist.size()>0){
returnString += jamlist.toString();
}
return returnString;
}
/**
* 跨域声明
* @param response
*/
private void setAccessHeader(HttpServletResponse response) {
response.setHeader("Access-Control-Allow-Origin", "*");
}
}
备份
package com.enjoyor.soa.traffic.server.sjjx.http;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
public class HttpRequest {
/**
* 向指定URL发送GET方法的请求
* @param url 发送请求的URL
* @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
* @return URL 所代表远程资源的响应结果
*/
public static String sendGet(String url, String param) {
String result = "";
String strUrl = "";
try {
HttpClient httpClient=new HttpClient();
GetMethod getMethod=null;
if(param == ""){
strUrl = url ;
}else{
strUrl = url + "?" + param;
}
getMethod=new GetMethod(strUrl);
getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());
httpClient.executeMethod(getMethod);
// byte[] bResposeBody = getMethod.getResponseBody();
//String strResposeBody = new String(bResposeBody);
String strResposeBody = new String(getMethod.getResponseBody().getBytes("iso8859-1"),"utf-8"); //修改编码
result = strResposeBody;
} catch (Exception e) {
System.out.println("发送GET请求出现异常!" + e);
e.printStackTrace();
}
return result;
}
/**
* 向指定 URL 发送POST方法的请求
* @param url 发送请求的 URL
* @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
* @return 所代表远程资源的响应结果
*/
public static String sendPost(String url, String param) {
PrintWriter out = null;
BufferedReader in = null;
String result = "";
try {
URL realUrl = new URL(url);
// 打开和URL之间的连接
URLConnection conn = realUrl.openConnection();
// 设置通用的请求属性
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
// 获取URLConnection对象对应的输出流
out = new PrintWriter(conn.getOutputStream());
// 发送请求参数
out.print(param);
// flush输出流的缓冲
out.flush();
// 定义BufferedReader输入流来读取URL的响应
in = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("发送 POST 请求出现异常!"+e);
e.printStackTrace();
}
//使用finally块来关闭输出流、输入流
finally{
try{
if(out!=null){
out.close();
}
if(in!=null){
in.close();
}
}
catch(IOException ex){
ex.printStackTrace();
}
}
return result;
}
/* public static void main(String args[]) throws ParserConfigurationException, SAXException, IOException{
String url="http://www.hzjtydzs.com/web/xmlsvc/currentJamIndex.aspx?_=1482462966169";
String param = "";
String fileLac = sendGet(url, param);
Element aaa = XmlHelper.getRootElement(fileLac);
}*/
}
向指定URL发送GET方法获取资源,编码问题。 Rest风格的更多相关文章
- wemall doraemon中Android app商城系统向指定URL发送GET方法的请求代码
URL的openConnection()方法将返回一个URLConnection对象,该对象表示应用程序和 URL 之间的通信链接.程序可以通过URLConnection实例向该URL发送请求.读取U ...
- HttpSenderUtil向指定 URL 发送POST方法的请求
package com.founder.ec.common.utils; import java.io.BufferedReader; import java.io.IOException; impo ...
- 向指定url发送请求与获取响应
string url = @"https://www.baidu.com"; //向指定服务器发起请求 HttpWebRequest request = (HttpWebReque ...
- Ajax在静态页面中向指定url发送json请求获取返回的json数据
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- 向指定URL发送GET、POST方法的请求
/** * 向指定URL发送GET方法的请求 * * @param url * 发送请求的URL * @param param * 请求参数,请求参数应该是 name1=value1&name ...
- 向指定URL发送GET和POST请求
package com.sinosoft.ap.wj.common.util; import java.io.BufferedReader;import java.io.IOException;imp ...
- 向指定url发送Get/Post请求
向指定url发送Get/Post请求 1.向指定url发送Get/Post请求 2.HttpUtil 工具类–向指定url发送Get/Post请求 1.向指定url发送Get/Post请求 impor ...
- 获取域名,url,指定url参数的方法
1.js获取域名的方法 1) var domain = document.domain 2) var domain = window.location.host 2.获取url的方法 1) var u ...
- 向指定URL 发送POST请求的方法
java发送psot请求: package com.tea.web.admin; import java.io.BufferedReader; import java.io.IOException; ...
随机推荐
- 2015ACM/ICPC亚洲区长春站
5532 Almost Sorted Array 题目大意:给你一个序列,如果它拿掉其中一个数后,可以是该序列成为非递减或非递增序列,则输出YES. 有两种思路,第一种代码比较简单,是LIS,复杂度n ...
- 分布式缓存技术redis学习系列(一)——redis简介以及linux上的安装
redis简介 redis是NoSQL(No Only SQL,非关系型数据库)的一种,NoSQL是以Key-Value的形式存储数据.当前主流的分布式缓存技术有redis,memcached,ssd ...
- caffe中权值初始化方法
首先说明:在caffe/include/caffe中的 filer.hpp文件中有它的源文件,如果想看,可以看看哦,反正我是不想看,代码细节吧,现在不想知道太多,有个宏观的idea就可以啦,如果想看代 ...
- hibernate的@EmbeddedId嵌入式主键详解
一.前言 在我们的日常开发中,有时候会用到数据库进行设计的时候,采用了复合主键来来保证唯一性,下面介绍一下采用hibernate的@EmbeddedId嵌入式主键. 二.说明 设计一个学生类,包含了三 ...
- BZOJ 2654 & 玄学二分+MST
题意: 给一张图,边带权且带颜色黑白,求出一棵至少包含k条白边的MST SOL: 正常人都想优先加黑边或者是白边,我也是这么想的...你看先用白边搞一棵k条边的MST...然后维护比较黑边跟白边像堆一 ...
- Leetcode Valid Palindrome
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignori ...
- [BZOJ4407]于神之怒加强版
BZOJ挂了... 先把程序放上来,如果A了在写题解吧. #include<cstdio> #include<algorithm> #define N 5000010 #def ...
- HttpPostedFile类的使用方法
HttpPostedFile注意事项: (1) HttpPostedFile提供对客户端已上载的单独文件的访问. (2) 对于客户端已上载的文件,最好先保存到服务器,再访问:而不是直接访问 ...
- 谢欣伦 - OpenDev原创教程 - 通信开发库libComm
libComm是一个免费的简单的通信库,其中的接口类与函数大都以小写的x打头,来源于我的姓氏首字母(谢欣伦). 下载 Sample using libComm - v1.1 For WinXP lib ...
- 《Linux内核设计与实现》读书笔记 第五章 系统调用
第五章系统调用 系统调用是用户进程与内核进行交互的接口.为了保护系统稳定可靠,避免应用程序恣意忘形. 5.1与内核通信 系统调用在用户空间进程和硬件设备间添加了一个中间层, 作用:为用户空间提供了一种 ...