向指定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; ...
随机推荐
- AngularJS学习之依赖注入
1.什么是依赖注入:简称DI,是一种软件设计模式,在这种模式下,一个或更多的依赖(或服务)被注入(或者通过引用传递)到一个独立的对象(或客户端)中,然后成为了该客户端状态的一部分. 该模式分离了客户端 ...
- Trie URAL 7192 Chip Factory (15长春J)
题目传送门 题意:从n个数中选出不同的三个数a b c,使得(a+b)^c 最大 分析:先将所有数字按位插入到字典树上,然后删除两个数字,贪心询问与剩下的数字最大异或值. /************* ...
- BICEP单元测试——随机四则运算升级版
一.测试方法 6个值得测试的具体部位: Right-结果是否正确? B-是否所有的边界条件都是正确的? I-能查一下反向关联吗? C-能用其他手段交叉检查一下结果吗? E-你是否可以强制错误条件发生? ...
- ffmpeg 屏幕录制 so easy....
linux Linux下使用FFmpeg进行屏幕录制相对比较方便,可以使用x11grab,使用如下的命令: ffmpeg -f x11grab -s 1600x900 -r 50 -vcodec li ...
- 在list_*页面显示出一级栏目下的所有二级栏目
<ul class="nav nav-pills nav-stacked"> {dede:channelartlist typeid='1,1'} <div cl ...
- vs2015帮助文档
1)注释快捷键: CTRL + K - CTRL + C (注释) CTRL + K 然后 CTRL + U (取消注释) shift+"*"---------整段(取消)注释 2 ...
- php 截取中文字符串 - ord()函数 0xa0...
在ASCII中,0xa0表示汉字的开始 其中php中的一个函数ord()函数 此函数功能返回一个字符的askii码值: 如ord('A')=65; <?php function GBsubstr ...
- 解决svn working copy locked问题
标题:working copy locked 提示:your working copy appears to be locked. run cleanup to amend the situation ...
- C#.NET中数组、ArrayList和List三者的区别
数组在C#.NET中是最早出现的,在内存中是顺序连续存储的,所以它的索引速度非常快,赋值与修改元素也很简单:但是,也正因为数组是顺序连续存储的,在两个数据间插入数据是很不方便的,而且在声明数组的时候必 ...
- PHP配置参数
PHP使用到两个比较重要的配置文件: php.ini:决定php语言运行的环境,支持扩展的模块 , 开发环境的配置.(路径一般位于/etc/php.ini 或 /usr/local/php/etc/p ...