1. 程式人生 > >使用HttpClient呼叫外部系統介面2-HttpClient 模擬登陸,保持會話並進行後續操作

使用HttpClient呼叫外部系統介面2-HttpClient 模擬登陸,保持會話並進行後續操作

下面主要說明 Form-Based 的驗證方式的演示程式碼,如果登陸時需要一個驗證碼的話,那只有自己想辦法怎麼得到這個碼了:

package com.example.demo;

import org.apache.commons.httpclient.Cookie;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.cookie.CookiePolicy;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;

public class HttpClientLogin {
    public
    static void main(String[] args) {
        //登陸 Url
        String loginUrl = "http://192.168.1.100:8080/xx/login.do";

        //需登陸後訪問的 Url
        String dataUrl = "http://192.168.1.100:8999/xx/user_info.html?userid=123456";

        HttpClient httpClient = new HttpClient();

        //模擬登陸,按實際伺服器端要求選用 Post 或 Get 請求方式
        PostMethod postMethod = new PostMethod(loginUrl);

        //設定登陸時要求的資訊,一般就使用者名稱和密碼,驗證碼自己處理了
        NameValuePair[] data = {
                new NameValuePair("username", "aaa"),
                new NameValuePair("password", "123456"),
                new NameValuePair("code", "anyany")
        };

        postMethod.setRequestBody(data);

        try {
            //設定 HttpClient 接收 Cookie,用與瀏覽器一樣的策略
            httpClient.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);

            httpClient.executeMethod(postMethod);

            //獲得登陸後的 Cookie
            Cookie[] cookies = httpClient.getState().getCookies();

            String tmpcookies = "";
            for (Cookie c : cookies) {
                tmpcookies += c.toString() + ";";
            }

            //進行登陸後的操作
            GetMethod getMethod = new GetMethod(dataUrl);

            //每次訪問需授權的網址時需帶上前面的 cookie 作為通行證
            getMethod.setRequestHeader("cookie", tmpcookies);

            //你還可以通過 PostMethod/GetMethod 設定更多的請求後資料
            //例如,referer 從哪裡來的,UA 像搜尋引擎都會表名自己是誰,無良搜尋引擎除外,這個也可以不要
//            postMethod.setRequestHeader("Referer", "http://localhost:8080");
//            postMethod.setRequestHeader("User-Agent", "aaa Spot");

            httpClient.executeMethod(getMethod);

            //打印出返回資料,檢驗一下是否成功
            String text = getMethod.getResponseBodyAsString();
            System.out.println(text);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

要引入jar包

<dependency>
	<groupId>commons-httpclient</groupId>
	<artifactId>commons-httpclient</artifactId>
	<version>3.0.1</version>
</dependency>

相關推薦

使用HttpClient呼叫外部系統介面2-HttpClient 模擬登陸保持會話進行後續操作

下面主要說明 Form-Based 的驗證方式的演示程式碼,如果登陸時需要一個驗證碼的話,那只有自己想辦法怎麼得到這個碼了: package com.example.demo; import org.apache.commons.httpclient.Cookie; im

HttpClient 呼叫其它系統介面的工具類(post、get請求)

功能介紹: 1)實現了所有 HTTP 的方法(GET,POST,PUT,HEAD 等) 2)支援自動轉向 3)支援 HTTPS 協議 4)支援代理伺服器等 HttpClient最重要的功能是執行HTTP方法:執行一個HTTP方法涉及一個或多個HTTP請求/ HTTP

java 從程式內部呼叫外部url/介面

本人微信 zf363133213 歡迎各位新增好友,共同探討問題 第一種方法: public Object test(){ HttpHeaders headers = new HttpHeaders();//http請求頭 RestTemplate restTemplate = ne

外部系統介面對接需求需要產品經理懂什麼?

作為一名P2P和小貸行業的產品經理,經常有外部系統進行介面對接的需求。P2P系統需要對接的外部系統主要有P2P返利網這些聚合型的理財平臺,第三方支付平臺,P2P行業資訊入口網站等。而小貸業務系統主要對接的有P2P平臺,也叫做資產方平臺,第三方支付平臺。 因為平時工作中,有大

與其他系統介面對接(java)json格式資料傳遞···OkHttpClient方式

上一種方式HttpURLConnection方式出現了點問題,就是在idea中啟動服務一切正常。當時用tomcat部署專案時候,對方介面接收引數出現中文亂碼問題。用了很多方式都沒有解決,不知有沒有大佬可以解決 引入依賴 <dependency>

與其他系統介面對接(java)json格式資料傳遞···HttpURLConnection方式

這個操作是與****系統進行資料介面的對接,本系統向****系統傳遞幾個引數,****系統接收並返回值。 目錄 post請求方式 @Service層 工具類ResultUtil pom需要新增的依賴 get請求方式 另一種 OkHttpClient 方式 post

開源部落格系統 Solo 2.9.7 釋出新面板 Jane

   Solo 是一款一個命令就能搭建好的 Java 開源部落格系統,如果你想開個獨立部落格,請一定不要錯過!v2.9.7 加入了一款新面板 Jane: 案例 D 的個人部落格 Jiahao.Zhang's Blog 子兮子兮 鉛筆的個人部落格 洗澡狂魔

網頁爬蟲-通過已登入後的cookie模擬登陸狀態保持會話進行後續操作

剛開始的時候打算使用java程式直接登陸網站在進行後續操作,後來發現有些網站的重定向太多不好操作, 所以改用已登入的cookie 來保持會話, 使用方式很簡單,只需要在瀏覽器上登入你要操作的網站,然後獲取cookie值,將cookie放到程式裡就實現了儲存會話的功能了, 1、新增mave

代理IP,模擬登陸request.get設定cookie

'uuid_tt_dd=9355752249176600242_20180327; __yadk_uid=6BHVQvWYnoNxl3eLA9VqAKJDzcTsHk7N; kd_user_id=fa963059-44ce-48f6-9b11-db28f9c2f8dc; Hm_ct_6bcd52f51e9b3

模擬登陸】github模擬登陸列印資訊流

目的:動態獲取cookie 第一:分析登陸過程 1、開啟開發者工具,檢視各自請求 2、可以看到name為session的請求【方式post,傳入的data】 3、檢視name為login的請求,原始碼中獲得token,作為上一個請求中的data的一部分

使用HTTPURLConnection模擬登陸爬取網頁內容

如果你需要爬取某些網頁的內容,但這些網站需要登入,那就需要一些額外的步驟來由程式來完成這些登入並爬取我們需要的網頁內容了,任意登入頁面都是向伺服器傳送請求,如果我們能夠模擬向伺服器傳送請求,那麼自然登入也就不在話下,通過Fiddler抓取我們需要的一些資訊,很輕鬆的就能模擬

scrapy的一些容易忽視的點(模擬登陸傳遞item等)

信息 pan pytho 完成 xtra author back book 多少 scrapy爬蟲註意事項 item數據只有最後一條 item字段傳遞後錯誤,混亂 對一個頁面要進行兩種或多種不同的解析 xpath中contains的使用 提取不在標簽內的文本內容 使用cs

java使用httpclient呼叫第三方介面

java使用httpclient呼叫第三方介面 HttpClientUtil工具類 package com.fz.util; import java.io.File; import java.net.URL; import java.util.ArrayList; im

HttpClient官方文件》1.2 HttpClient 介面

原文連結 1.2. HttpClient 介面 HttpClient 介面表示最基本的HTTP請求執行要約。它不會對請求執行過程加上約束或一些特定的資訊,並且保留連線管理,狀態管理,認證和處理重定向的細節到各自的實現中。這會使它更方便的使用額外功能來裝飾介面,如響應內容快取。 通常來說, H

spring一個專案呼叫另一個專案介面的方法HttpClient呼叫

客戶端程式碼 所需jar  HttpClient程式碼 import java.io.UnsupportedEncodingException; import java.nio.charset.Charset; import net.sf.json.JSONObj

HttpClient呼叫其他介面

步驟:1. 建立HttpClient物件。2. 建立請求方法的例項,並指定請求URL。如果需要傳送GET請求,建立HttpGet物件;如果需要傳送POST請求,建立HttpPost物件。3. 如果需要傳送請求引數,可呼叫HttpGet、HttpPost共同的setParams

HttpClient呼叫介面傳送鍵值對引數

package common; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Lis

用Apache httpclient模擬登陸學生個人資訊系統

不同學校的教務系統設計應該會有不同,這裡就只針對我的學校。本文主要講作為純小白連返回碼302都還不懂的我是怎麼一步步整的。 我打算用的是java。 因為模擬登入這塊以前都沒做過,就簡單百度了下,找到了開發用的相應的包,比如httpclient,網上也有別人做好的程式碼上傳的

通過HttpClient呼叫介面時忽略SSL證書驗證

在專案過程中發現呼叫的介面地址為https形式的,一般用httpclient呼叫會丟擲異常:Exception in thread "main" javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated

springMVC、httpClient呼叫別人提供的介面

package utils; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import org.apache.http.HttpEn