欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java實(shí)現(xiàn)python session功能代碼實(shí)例

 更新時(shí)間:2019年11月06日 10:04:35   作者:lwb444  
這篇文章主要介紹了java實(shí)現(xiàn)python session功能代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了java實(shí)現(xiàn)python session功能代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

怎么在java中實(shí)現(xiàn)類(lèi)似于python的requests模塊的session功能呢。java也是可以實(shí)現(xiàn)的,用java的okhttp包可以實(shí)現(xiàn)。

在pom.xml中加入相關(guān)依賴(lài)

<!-- https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp -->
<dependency>
  <groupId>com.squareup.okhttp3</groupId>
  <artifactId>okhttp</artifactId>
  <version>4.2.2</version>
</dependency>

后面是相關(guān)的java代碼:

package com.puple.atto.datastructure;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
import java.util.regex.*;
 
import okhttp3.Cookie;
import okhttp3.CookieJar;
import okhttp3.FormBody;
import okhttp3.HttpUrl;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class Session {
 
  private final OkHttpClient mOkHttpClient = new OkHttpClient.Builder().cookieJar(new CookieJarManager()).build();
//   //如果直接寫(xiě)個(gè)類(lèi),里面寫(xiě)saveFromResponse和loadForRequest,而不實(shí)現(xiàn)CookieJar接口,運(yùn)行可以正常通過(guò),但ide會(huì)顯紅,因?yàn)锽ulider類(lèi)的cookieJsr方法需要接受CookieJar類(lèi)型的實(shí)例。鴨子類(lèi)除了能節(jié)約代碼行數(shù),在可理解性 可讀性 多人合作性上面都不如接口規(guī)范,誰(shuí)知道鴨子類(lèi)里面要寫(xiě)什么方法,除了寫(xiě)代碼得人自己。
  private class CookieJarManager implements CookieJar{
    private final HashMap<String, List<Cookie>> cookieStore = new HashMap<>();
 
    @Override
    public void saveFromResponse(HttpUrl url, List<Cookie> cookies) {
      cookieStore.put(url.host(), cookies);
    }
 
    @Override
    public List<Cookie> loadForRequest(HttpUrl url) {
      List<Cookie> cookies = cookieStore.get(url.host());
      return cookies != null ? cookies : new ArrayList<Cookie>(){};
    }
  }
 
  /**
   * @param url 要請(qǐng)求的url
   * @param paramsMap post的請(qǐng)求參數(shù)
   * @return post的返回結(jié)果
   */
  public String post(String url, HashMap<String, String > paramsMap){
 
    FormBody.Builder formBodyBuilder = new FormBody.Builder();
    Set<String> keySet = paramsMap.keySet();
    for(String key:keySet) {
      String value = paramsMap.get(key);
      formBodyBuilder.add(key,value);
    }
    FormBody formBody = formBodyBuilder.build();
    Request request = new Request
        .Builder()
        .post(formBody)
        .url(url)
        .build();
    try (Response response = mOkHttpClient.newCall(request).execute()) {
      String respStr = response.body().string();
 
      return respStr;
    }catch (Exception e){
 
      e.printStackTrace();
      return "";
    }
  }
 
  public String get(String url) {
    final Request.Builder builder = new Request.Builder();
    builder.url(url);
    final Request request = builder.build();
    try (Response response = mOkHttpClient.newCall(request).execute()) {
      return response.body().string();
    }catch (Exception e){
      e.printStackTrace();
      return "";
    }
  }
 
  public static void test(){
    Session ss=new Session();
    String loginUrl="http://192.168.9.244:8080/RDCJWeb/login";
    HashMap<String,String> paramsMap = new HashMap<>() ;
    paramsMap.put("username","soft1");
    paramsMap.put("password","soft1");
    String respStr = ss.post(loginUrl,paramsMap);
 
    String res=ss.get("http://192.168.9.244:8080/RDCJWeb/static/dist/html/deviceWarn.html");
    System.out.println(res); 
  } 
  public static void main(String[] args) {
    test();
  } 
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java基礎(chǔ)類(lèi)庫(kù)之StringBuffer類(lèi)用法詳解

    Java基礎(chǔ)類(lèi)庫(kù)之StringBuffer類(lèi)用法詳解

    String類(lèi)是在所有開(kāi)發(fā)項(xiàng)目開(kāi)發(fā)之中一定會(huì)使用的一個(gè)功能類(lèi)。雖然String類(lèi)很好用,但也有弊端——內(nèi)容不允許頻繁修改,所以為了解決問(wèn)題,我們提供了StringBuffer類(lèi)。本文就來(lái)講講StringBuffer類(lèi)的用法
    2022-07-07
  • Spring Security中防護(hù)CSRF功能詳解

    Spring Security中防護(hù)CSRF功能詳解

    這篇文章主要介紹了Spring Security中防護(hù)CSRF功能,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • java的Map集合中按value值進(jìn)行排序輸出的實(shí)例代碼

    java的Map集合中按value值進(jìn)行排序輸出的實(shí)例代碼

    下面小編就為大家?guī)?lái)一篇java的Map集合中按value值進(jìn)行排序輸出的實(shí)例代碼。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-08-08
  • Java中初始化List集合的6種方式詳解

    Java中初始化List集合的6種方式詳解

    這篇文章主要介紹了Java中初始化List集合的6種方式詳解,List 是 Java 開(kāi)發(fā)中經(jīng)常會(huì)使用的集合,在使用List時(shí)需要進(jìn)行初始化操作,今天我們就來(lái)看一下常用的幾種list集合初始化方式,需要的朋友可以參考下
    2023-10-10
  • Java中List使用stream流轉(zhuǎn)成map的幾種方式詳解

    Java中List使用stream流轉(zhuǎn)成map的幾種方式詳解

    Stream是Java8中處理集合的關(guān)鍵抽象概念,它可以指定你希望對(duì)集合進(jìn)行的操作,可以執(zhí)行非常復(fù)雜的查找、過(guò)濾和映射數(shù)據(jù)等操作,下面這篇文章主要給大家介紹了關(guān)于Java中List使用stream流轉(zhuǎn)成map的幾種方式,需要的朋友可以參考下
    2023-04-04
  • Mybatis?如何開(kāi)啟控制臺(tái)打印sql語(yǔ)句

    Mybatis?如何開(kāi)啟控制臺(tái)打印sql語(yǔ)句

    這篇文章主要介紹了Mybatis?如何開(kāi)啟控制臺(tái)打印sql語(yǔ)句問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • java使用單向鏈表解決數(shù)據(jù)存儲(chǔ)自定義排序問(wèn)題

    java使用單向鏈表解決數(shù)據(jù)存儲(chǔ)自定義排序問(wèn)題

    本文主要介紹了java使用單向鏈表解決數(shù)據(jù)存儲(chǔ)自定義排序問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 類(lèi)似微信說(shuō)話功能的錄音處理代碼分享

    類(lèi)似微信說(shuō)話功能的錄音處理代碼分享

    這篇文章主要介紹了類(lèi)似微信中說(shuō)話功能的錄音處理代碼,需要大家自己加UI界面,大家參考使用吧
    2014-01-01
  • 詳解Java刪除Map中元素java.util.ConcurrentModificationException”異常解決

    詳解Java刪除Map中元素java.util.ConcurrentModificationException”異常解決

    這篇文章主要介紹了詳解Java刪除Map中元素java.util.ConcurrentModificationException”異常解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • java中如何判斷對(duì)象是否是垃圾

    java中如何判斷對(duì)象是否是垃圾

    這篇文章主要介紹了java中如何判斷對(duì)象是否是垃圾,Java有兩種算法判斷對(duì)象是否是垃圾:引用計(jì)數(shù)算法和可達(dá)性分析算法,需要的朋友可以參考下
    2023-04-04

最新評(píng)論