向指定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; ...
随机推荐
- call()与apply()
1.obj1.method1.call(obj2,argument1,argument2) call的作用就是把obj1的方法放到obj2上使用 2. add 来替换 sub,add.call(sub ...
- SOAPUI使用教程-创建MockResponse步骤
MockResponse测试步骤监听一个SOAP请求并返回一个预先配置的响应,然后再继续. 传入的请求的能被断言检查. 这种TestStep使用场景是例如: 客户端测试,验证传入的请求并返回假或不正确 ...
- Is It A Tree?[HDU1325][PKU1308]
Is It A Tree? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- BZOJ4078 : [Wf2014]Metal Processing Plant
设$D(A)\leq D(B)$,从小到大枚举$D(A)$,双指针从大到小枚举$D(B)$. 那么对于权值不超过$D(A)$的边,可以忽略. 对于权值介于$(D(A),D(B)]$之间的边,需要满足那 ...
- js 闭包之一
既然说闭包的化,我们就先来说说函数.慢慢的进入进入正题 (1)函数申明 f1(); function f1(){ alert(") }//结果 1 (2)函数定义 f1();var f1=f ...
- ZeroMQ接口函数之 :zmq_init - 初始化ZMQ环境上下文
ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq_init zmq_init(3) ØMQ Manual - ØMQ/3.2.5 Name zmq_init - 初 ...
- 一些用过的我常忘记的小知识(web前端)
背景图片固定:background-attachment:fixed 将图片的尺寸从中心点开始改变:backgroun-position:center background-size: ** 旋转 ...
- <八>JDBC_重构DAO查询方法
DAO类: import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import ...
- 关于linux开机进入grub问题的解决方法
用还是用ls (hd0,X)/grub命令查看每个盘里面的内容, 情况一 :如果你是在/boot/grub这个目录下找到的 grub rescue>root=(hd0,9) gr ...
- soui使用wke时,设置js回调注意事项
wke响应网页js函数调用时注意: 必须等网页加载完成后,才能通过SetJsFunc设置js函数与c++回调的对应.网页未加载就设置,不会响应c++函数. 示例代码: wkeJSData* data ...