『壹』 怎樣用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=","")