『壹』 怎样用java获取URL返回状态码
可以用以下代码参考一下,如何获取URL返回状态码:
//用getResponseCode可以获取URL返回状态码
Stringsurl="";
try{
surl="你的url";
URLurl=newURL(surl);
URLConnectionrulConnection=url.openConnection();
=(HttpURLConnection)rulConnection;
httpUrlConnection.setConnectTimeout(300000);
httpUrlConnection.setReadTimeout(300000);
httpUrlConnection.connect();
Stringcode=newInteger(httpUrlConnection.getResponseCode()).toString();
Stringmessage=httpUrlConnection.getResponseMessage();
System.out.println("getResponseCodecode="+code);
System.out.println("getResponseMessagemessage="+message);
if(!code.startsWith("2")){
thrownewException("ResponseCodeisnotbeginwith2,code="+code);
}
System.out.println(getCurDateTime()+"连接"+surl+"正常");
}catch(Exceptionex){
System.out.println(ex.getMessage());
}
『贰』 java如何提取url里的域名
java.net.URL 而不抄是 java.Net.URL
使用getHost获取到的域名信息存在安全漏洞,例如:http://127.0.0.1\.123.cn/1.htm这个URL使用getHost得到的域名是127.0.0.1\.123.cn。
建议使用正则表达式
『叁』 JAVA如何获得服务器端重定向后的URL
request.getHeader("REDIRECT_URL");
或试试
那在servlet里边或者action调用request.getRequestURL()就是了。
如果是获得容器内部的请求URI:request.getRequestURI(),两个方法挺象的。
『肆』 如何抓取一个网址下的所有页面链接
由于题目是放在【编程语言】栏目下的,但没有指定希望使用哪种编程语言,我选择使用java语言来实现。
在Java中,使用HttpURLConnection即可连接URL,随后可以使用InputStreamReader获取网页内容文本。然后,使用正则表达式解析网页内容文本,找到所有的<a>标签即实现需求。
以下是详细代码:
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.net.HttpURLConnection;
importjava.net.URL;
importjava.util.ArrayList;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassHtmlParser{
/**
*要分析的网页
*/
StringhtmlUrl;
/**
*分析结果
*/
ArrayList<String>hrefList=newArrayList();
/**
*网页编码方式
*/
StringcharSet;
publicHtmlParser(StringhtmlUrl){
//TODO自动生成的构造函数存根
this.htmlUrl=htmlUrl;
}
/**
*获取分析结果
*
*@throwsIOException
*/
publicArrayList<String>getHrefList()throwsIOException{
parser();
returnhrefList;
}
/**
*解析网页链接
*
*@return
*@throwsIOException
*/
privatevoidparser()throwsIOException{
URLurl=newURL(htmlUrl);
HttpURLConnectionconnection=(HttpURLConnection)url.openConnection();
connection.setDoOutput(true);
Stringcontenttype=connection.getContentType();
charSet=getCharset(contenttype);
InputStreamReaderisr=newInputStreamReader(
connection.getInputStream(),charSet);
BufferedReaderbr=newBufferedReader(isr);
Stringstr=null,rs=null;
while((str=br.readLine())!=null){
rs=getHref(str);
if(rs!=null)
hrefList.add(rs);
}
}
/**
*获取网页编码方式
*
*@paramstr
*/
privateStringgetCharset(Stringstr){
Patternpattern=Pattern.compile("charset=.*");
Matchermatcher=pattern.matcher(str);
if(matcher.find())
returnmatcher.group(0).split("charset=")[1];
returnnull;
}
/**
*从一行字符串中读取链接
*
*@return
*/
privateStringgetHref(Stringstr){
Patternpattern=Pattern.compile("<ahref=.*</a>");
Matchermatcher=pattern.matcher(str);
if(matcher.find())
returnmatcher.group(0);
returnnull;
}
publicstaticvoidmain(String[]arg)throwsIOException{
HtmlParsera=newHtmlParser("http://news.163.com/");
ArrayList<String>hrefList=a.getHrefList();
for(inti=0;i<hrefList.size();i++)
System.out.println(hrefList.get(i));
}
}
『伍』 java,导入httpClient包postMethod如何向指定网页传入账号密码,并且获得跳转后页面的url
httpClient包postMethod如何向指定网页传入账号密码
这步用HttpPost就可以成功了,如果别人向你回送跳转后页面的url,你就可以拿到,不然应该是拿不到的。
『陆』 Java请求一个URL。获取网站返回的数据。通过POST请求
packagewzh.Http;
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.io.PrintWriter;
importjava.net.URL;
importjava.net.URLConnection;
importjava.util.List;
importjava.util.Map;
publicclassHttpRequest{
/**
*向指定URL发送GET方法的请求
*
*@paramurl
*发送请求的URL
*@paramparam
*请求参数,请求参数应该是name1=value1&name2=value2的形式。
*@returnURL所代表远程资源的响应结果
*/
publicstaticStringsendGet(Stringurl,Stringparam){
Stringresult="";
BufferedReaderin=null;
try{
StringurlNameString=url+"?"+param;
URLrealUrl=newURL(urlNameString);
//打开和URL之间的连接
URLConnectionconnection=realUrl.openConnection();
//设置通用的请求属性
connection.setRequestProperty("accept","*/*");
connection.setRequestProperty("connection","Keep-Alive");
connection.setRequestProperty("user-agent",
"Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1)");
//建立实际的连接
connection.connect();
//获取所有响应头字段
Map<String,List<String>>map=connection.getHeaderFields();
//遍历所有的响应头字段
for(Stringkey:map.keySet()){
System.out.println(key+"--->"+map.get(key));
}
//定义BufferedReader输入流来读取URL的响应
in=newBufferedReader(newInputStreamReader(
connection.getInputStream()));
Stringline;
while((line=in.readLine())!=null){
result+=line;
}
}catch(Exceptione){
System.out.println("发送GET请求出现异常!"+e);
e.printStackTrace();
}
//使用finally块来关闭输入流
finally{
try{
if(in!=null){
in.close();
}
}catch(Exceptione2){
e2.printStackTrace();
}
}
returnresult;
}
/**
*向指定URL发送POST方法的请求
*
*@paramurl
*发送请求的URL
*@paramparam
*请求参数,请求参数应该是name1=value1&name2=value2的形式。
*@return所代表远程资源的响应结果
*/
publicstaticStringsendPost(Stringurl,Stringparam){
PrintWriterout=null;
BufferedReaderin=null;
Stringresult="";
try{
URLrealUrl=newURL(url);
//打开和URL之间的连接
URLConnectionconn=realUrl.openConnection();
//设置通用的请求属性
conn.setRequestProperty("accept","*/*");
conn.setRequestProperty("connection","Keep-Alive");
conn.setRequestProperty("user-agent",
"Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1)");
//发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
//获取URLConnection对象对应的输出流
out=newPrintWriter(conn.getOutputStream());
//发送请求参数
out.print(param);
//flush输出流的缓冲
out.flush();
//定义BufferedReader输入流来读取URL的响应
in=newBufferedReader(
newInputStreamReader(conn.getInputStream()));
Stringline;
while((line=in.readLine())!=null){
result+=line;
}
}catch(Exceptione){
System.out.println("发送POST请求出现异常!"+e);
e.printStackTrace();
}
//使用finally块来关闭输出流、输入流
finally{
try{
if(out!=null){
out.close();
}
if(in!=null){
in.close();
}
}
catch(IOExceptionex){
ex.printStackTrace();
}
}
returnresult;
}
}
//函数调用时填入URL和参数(参数非必须)就可以获取返回的数据,发送post请求调用示例
Stringresult=HttpRequest.sendPost("http://api.map..com/telematics/v3/weather?location=%E5%8C%97%E4%BA%AC&output=json&ak=","")