導航:首頁 > 編程語言 > javaheaderlocation

javaheaderlocation

發布時間:2023-09-26 19:46:41

A. java 怎麼實現HTTP的POST方式通訊,以及HTTPS方式傳遞

雖然在 JDK 的 java.net 包中已經提供了訪問 HTTP 協議的基本功能,但是對於大部分應用程序來說,JDK
庫本身提供的功能還不夠豐富和靈活。HttpClient 是 Apache Jakarta Common
下的子項目,用來提供高效的、最新的、功能豐富的支持 HTTP 協議的客戶端編程工具包,並且它支持 HTTP 協議最新的版本和建議。以下是簡單的post例子:
String url = "http://www.newsmth.net/bbslogin2.php";
PostMethod postMethod = new PostMethod(url);
// 填入各個表單域的值
NameValuePair[] data = { new NameValuePair("id", "youUserName"),
new NameValuePair("passwd", "yourPwd") };
// 將表單的值放入postMethod中
postMethod.setRequestBody(data);
// 執行postMethod
int statusCode = httpClient.executeMethod(postMethod);
// HttpClient對於要求接受後繼服務的請求,象POST和PUT等不能自動處理轉發
// 301或者302
if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY ||
statusCode == HttpStatus.SC_MOVED_TEMPORARILY) {
// 從頭中取出轉向的地址
Header locationHeader = postMethod.getResponseHeader("location");
String location = null;
if (locationHeader != null) {
location = locationHeader.getValue();
System.out.println("The page was redirected to:" + location);
} else {
System.err.println("Location field value is null.");
}
return;
}

B. java獲取伺服器文件,怎樣用url返回

第一種; response.setStatus(302);
response.setHeader("location", "/dayX/MyHtml.html"); 該方式可以重定向到伺服器指定頁面
當然還有以下方式:
第二種;請求轉發
請求轉發是指將請求再轉發到另一資源(一般為jsP或Servlet)。此過程依然在同一個請求范圍內,轉發後瀏覽器地址欄內容不變
請求轉發使用RequestDispatcher介面中的forward()方法來實現,該方法可以把請求轉發到另外一個資源,並讓該資源對瀏覽器的請求進行響應request.getRequestDispatcher(path) .forward(request,response);
第三種 重定向
重定向是指頁面重新定位到某個新地址,之前的請求失效,進入一個新的請求,且跳轉後瀏覽器地址欄內容將變為新的指定地址
重定向是通過HttpServletResponse對象的sendRedirect()來實現,該方法相當於瀏覽器重新發送一個請求
response.sendRedirect(path);

C. 用java做好的登陸界面,當登陸成功後跳轉到下個頁面的代碼是什麼

用java做好的登陸界面,當登陸成功後跳轉到下個頁面的代碼如下:
如果登陸驗專證是在jsp中,那麼跳轉可以寫成屬
1.response.sendRedirct("跳轉到頁面");
2.<jsp:forward page="跳轉頁面"/>
3.response.setHeader("Location","");
如果是登陸驗證是在servlet中,那麼中轉可以寫成
1.response.sendRedirect("/a.jsp");
2.RequestDispatcher dispatcher = request.getRequestDispatcher("/a.jsp");
dispatcher .forward(request, response);
也可以使用js代碼實現:
<script>
function validate(){
window.location.href="/index.jsp";
}
</script>

D. java網路爬蟲怎麼實現抓取登錄後的頁面

沒做過網路爬蟲,不過順手寫了個自動登錄貓撲打卡的程序你可以參考一下,需要的包是commons-logging.jar,commons-net-1.4.1.jar,commons-codec-1.3.jar,log4j.jar,httpclient-4.3.1.jar ,下面是源代碼,希望可以幫到你~~
package com.ly.mainprocess;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.Consts;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.StatusLine;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

public class Test1 {
public static void main(String[] args){
Test1 test1 = new Test1();
System.out.println(test1.process("******","******"));
}

@SuppressWarnings("deprecation")
public boolean process(String username,String password) {
boolean ret=false;
DefaultHttpClient httpclient = new DefaultHttpClient();
try {
HttpGet httpget;
HttpResponse response;
HttpEntity entity;

List<Cookie> cookies;

//組建登錄的post包
HttpPost httppost = new HttpPost("http://login.hi.mop.com/Login.do"); // 用戶登錄
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("nickname", username));
nvps.add(new BasicNameValuePair("password", password));
nvps.add(new BasicNameValuePair("origURL", "http://hi.mop.com/SysHome.do"));
nvps.add(new BasicNameValuePair("loginregFrom", "index"));
nvps.add(new BasicNameValuePair("ss", "10101"));

httppost.setEntity(new UrlEncodedFormEntity(nvps, Consts.UTF_8));
httppost.addHeader("Referer", "http://hi.mop.com/SysHome.do");
httppost.addHeader("Connection", "keep-alive");
httppost.addHeader("Content-Type", "application/x-www-form-urlencoded");
httppost.addHeader("Accept-Language", "zh-CN,zh;q=0.8");
httppost.addHeader("Origin", "http://hi.mop.com");
httppost.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36");
response = httpclient.execute(httppost);
entity = response.getEntity();
// System.out.println("Login form get: " + response.getStatusLine());
EntityUtils.consume(entity);

// System.out.println("Post logon cookies:");
cookies = httpclient.getCookieStore().getCookies();
if (cookies.isEmpty()) {
// System.out.println("None");
} else {
for (int i = 0; i < cookies.size(); i++) {
// System.out.println("- " + cookies.get(i).toString());
}
}

//進行頁面跳轉
String url = ""; // 頁面跳轉
Header locationHeader = response.getFirstHeader("Location");
// System.out.println(locationHeader.getValue());
if (locationHeader != null) {
url = locationHeader.getValue(); // 得到跳轉href
HttpGet httpget1 = new HttpGet(url);
response = httpclient.execute(httpget1);
// 登陸成功。。。hoho
}
entity = response.getEntity();
// System.out.println(response.getStatusLine());
if (entity != null) {
// System.out.println("Response content length: " + entity.getContentLength());
}
// 顯示結果
BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent(), "UTF-8"));
String line = null;
while ((line = reader.readLine()) != null) {
// System.out.println(line);
}

//自動打卡
// 訪問網站的子網頁。
HttpPost httppost1 = new HttpPost("http://home.hi.mop.com/ajaxGetContinusLoginAward.do"); // 設置個人信息頁面
httppost1.addHeader("Content-Type", "text/plain;charset=UTF-8");
httppost1.addHeader("Accept", "text/plain, */*");
httppost1.addHeader("X-Requested-With", "XMLHttpRequest");
httppost1.addHeader("Referer", "http://home.hi.mop.com/Home.do");
response = httpclient.execute(httppost1);
entity = response.getEntity();
// System.out.println(response.getStatusLine());
if(response.getStatusLine().toString().indexOf("HTTP/1.1 200 OK")>=0){
ret = true;
}
if (entity != null) {
// System.out.println("Response content length: " + entity.getContentLength());
}
// 顯示結果
reader = new BufferedReader(new InputStreamReader(entity.getContent(), "UTF-8"));
line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (Exception e) {

} finally {
httpclient.getConnectionManager().shutdown();
}
return ret;
}
}

E. java web怎麼添加response.setheader

response.setHeader()的用法


1. HTTP消息頭

(1)通用信息頭

即能用於請求消息中,也能用於響應信息中,但與被傳輸的實體內容沒有關系的信息頭,如Data,Pragma

主要: Cache-Control , Connection , Data , Pragma , Trailer , Transfer-Encoding , Upgrade


(2)請求頭

用於在請求消息中向伺服器傳遞附加信息,主要包括客戶機可以接受的數據類型,壓縮方法,語言,以及客戶計算機上保留的信息和發出該請求的超鏈接源地址等.

主要: Accept , Accept-Encoding , Accept-Language , Host ,


(3)響應頭

用於在響應消息中向客戶端傳遞附加信息,包括服務程序的名稱,要求客戶端進行認證的方式,請求的資源已移動到新地址等.

主要: Location , Server , WWW-Authenticate(認證頭)


(4)實體頭

用做實體內容的元信息,描述了實體內容的屬性,包括實體信息的類型,長度,壓縮方法,最後一次修改的時間和數據的有效期等.

主要: Content-Encoding , Content-Language , Content-Length , Content-Location , Content-Type


(5)擴展頭

主要:Refresh, Content-Disposition


2. 幾個主要頭的作用

(1)Content-Type的作用

該實體頭的作用是讓伺服器告訴瀏覽器它發送的數據屬於什麼文件類型。

例如:當Content-Type 的值設置為text/html和text/plain時,前者會讓瀏覽器把接收到的實體內容以HTML格式解析,後者會讓瀏覽器以普通文本解析.


(2)Content-Disposition 的作用

當Content-Type 的類型為要下載的類型時 , 這個信息頭會告訴瀏覽器這個文件的名字和類型。


Content-Disposition擴展頭的例子:

<%@pagepageEncoding="GBK"contentType="text/html;charset=utf-8"import="java.util.*,java.text.*"%>
<%=DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT,Locale.CHINA).format(newDate())
%>
<%
response.setHeader("Content-Type","video/x-msvideo");
response.setHeader("Content-Disposition","attachment;filename=aaa.doc");
%>


Content-Disposition中指定的類型是文件的擴展名,並且彈出的下載對話框中的文件類型圖片是按照文件的擴展名顯示的,點保存後,文件以filename的值命名,保存類型以Content中設置的為准。


注意:在設置Content-Disposition頭欄位之前,一定要設置Content-Type頭欄位。



3.如何實現文件下載

要實現文件下載,我們只需要設置兩個特殊的相應頭,它們是什麼頭?如果文件名帶中文,該如何解決?

兩個特殊的相應頭:

----Content-Type: application/octet-stream

----Content-Disposition: attachment;filename=aaa.zip

例如:

response.setContentType("image/jpeg");
response.setHeader("Content-Disposition","attachment;filename=Bluehills.jpg");

如果文件中filename參數中有中文,則就會出現亂碼。

解決辦法:

(1)MimeUtility.encodeWord("中文.txt");//現在版本的IE還不行
(2)newString("中文".getBytes("GB2312"),"ISO8859-1");//實際上這個是錯誤的


4. 測試並分析文件名亂碼問題

response.setHeader()下載中文文件名亂碼問題

response.setHeader("Content-Disposition","attachment;filename="+java.net.URLEncoder.encode(fileName,"UTF-8"));


response.setHeader(...)文件名中有空格的時候

StringfileName=StringUtils.trim(file.getName());
StringformatFileName=encodingFileName(name);//在後面定義方法encodingFileName(StringfileName);
response.setHeader("Content-Disposition","attachment;filename="+formatFileName);
//處理文件名中出現的空格
//其中%20是空格在UTF-8下的編碼
(StringfileName){
StringreturnFileName="";
try{
returnFileName=URLEncoder.encode(fileName,"UTF-8");
returnFileName=StringUtils.replace(returnFileName,"+","%20");
if(returnFileName.length()>150){
returnFileName=newString(fileName.getBytes("GB2312"),"ISO8859-1");
returnFileName=StringUtils.replace(returnFileName,"","%20");
}
}catch(UnsupportedEncodingExceptione){
e.printStackTrace();
if(log.isWarnEnabled()){
log.info("Don'tsupportthisencoding...");
}
}
returnreturnFileName;
}


一秒刷新頁面一次

response.setHeader("refresh","1");

二秒跳到其他頁面

response.setHeader("refresh","2;URL=otherPagename");

沒有緩存:

response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");

設置過期的時間期限

response.setDateHeader("Expires",System.currentTimeMillis()+自己設置的時間期限);

訪問別的頁面:

response.setStatus(302);
response.setHeader("location","url");

通知瀏覽器數據採用的壓縮格式:

response.setHeader("Content-Encoding","壓縮後的數據");


高速瀏覽器壓縮數據的長度:

response.setHeader("Content-Length",壓縮後的數據.length+"");


高速瀏覽器圖片或視頻:

response.setHeader("Content-type","這個參數在tomcat里conf下的web.xml裡面找");
inputstreamin=this.getServletContext.getResourceAsStream("/2.jpg");
intlen=0;
bytebuffer[]=newbyte[1024]
outputStreamout=response.getOutputStream();
while(len=in.read(buffer)>0){
out.write(buffer,0,len)
}




高速瀏覽器已下載的形式:

response.setHeader("Content-disposition","attachment;filename=2.jpg");
inputstreamin=this.getServletContext.getResourceAsStream("/2.jpg");
intlen=0;
bytebuffer[]=newbyte[1024]
outputStreamout=response.getOutputStream();
while(len=in.read(buffer)>0){
out.write(buffer,0,len)
}
閱讀全文

與javaheaderlocation相關的資料

熱點內容
廣州寄文件去吉林多少錢 瀏覽:254
蘋果APP文件夾創建 瀏覽:903
黃米是什麼app 瀏覽:417
word如何插入一個新文件夾 瀏覽:357
word文件夾前面有個符號 瀏覽:350
把word轉換成語音 瀏覽:220
linuxfile文件 瀏覽:454
如何用網路打普通電話 瀏覽:463
linux進程打開的文件 瀏覽:134
新購u盤無法儲存文件 瀏覽:553
5s要不要升級ios93 瀏覽:926
小米手機助手怎麼關閉自動升級 瀏覽:24
外星人能不能升級到win10系統盤 瀏覽:652
加入java信任站點 瀏覽:486
好用的急救知識app 瀏覽:524
什麼是網路適配器驅動文件名 瀏覽:717
吉林文件箱多少錢 瀏覽:113
ae模板版本 瀏覽:204
手機qq步數功能在哪裡 瀏覽:721
c程序設計04737 瀏覽:403

友情鏈接