java实现python session功能代码实例
这篇文章主要介绍了java实现pythonsession功能代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
怎么在java中实现类似于python的requests模块的session功能呢。java也是可以实现的,用java的okhttp包可以实现。
在pom.xml中加入相关依赖
com.squareup.okhttp3 okhttp 4.2.2
后面是相关的java代码:
packagecom.puple.atto.datastructure;
importjava.text.MessageFormat;
importjava.util.ArrayList;
importjava.util.HashMap;
importjava.util.List;
importjava.util.Set;
importjava.util.regex.*;
importokhttp3.Cookie;
importokhttp3.CookieJar;
importokhttp3.FormBody;
importokhttp3.HttpUrl;
importokhttp3.OkHttpClient;
importokhttp3.Request;
importokhttp3.Response;
publicclassSession{
privatefinalOkHttpClientmOkHttpClient=newOkHttpClient.Builder().cookieJar(newCookieJarManager()).build();
////如果直接写个类,里面写saveFromResponse和loadForRequest,而不实现CookieJar接口,运行可以正常通过,但ide会显红,因为Bulider类的cookieJsr方法需要接受CookieJar类型的实例。鸭子类除了能节约代码行数,在可理解性可读性多人合作性上面都不如接口规范,谁知道鸭子类里面要写什么方法,除了写代码得人自己。
privateclassCookieJarManagerimplementsCookieJar{
privatefinalHashMap>cookieStore=newHashMap<>();
@Override
publicvoidsaveFromResponse(HttpUrlurl,Listcookies){
cookieStore.put(url.host(),cookies);
}
@Override
publicListloadForRequest(HttpUrlurl){
Listcookies=cookieStore.get(url.host());
returncookies!=null?cookies:newArrayList(){};
}
}
/**
*@paramurl要请求的url
*@paramparamsMappost的请求参数
*@returnpost的返回结果
*/
publicStringpost(Stringurl,HashMapparamsMap){
FormBody.BuilderformBodyBuilder=newFormBody.Builder();
SetkeySet=paramsMap.keySet();
for(Stringkey:keySet){
Stringvalue=paramsMap.get(key);
formBodyBuilder.add(key,value);
}
FormBodyformBody=formBodyBuilder.build();
Requestrequest=newRequest
.Builder()
.post(formBody)
.url(url)
.build();
try(Responseresponse=mOkHttpClient.newCall(request).execute()){
StringrespStr=response.body().string();
returnrespStr;
}catch(Exceptione){
e.printStackTrace();
return"";
}
}
publicStringget(Stringurl){
finalRequest.Builderbuilder=newRequest.Builder();
builder.url(url);
finalRequestrequest=builder.build();
try(Responseresponse=mOkHttpClient.newCall(request).execute()){
returnresponse.body().string();
}catch(Exceptione){
e.printStackTrace();
return"";
}
}
publicstaticvoidtest(){
Sessionss=newSession();
StringloginUrl="http://192.168.9.244:8080/RDCJWeb/login";
HashMapparamsMap=newHashMap<>();
paramsMap.put("username","soft1");
paramsMap.put("password","soft1");
StringrespStr=ss.post(loginUrl,paramsMap);
Stringres=ss.get("http://192.168.9.244:8080/RDCJWeb/static/dist/html/deviceWarn.html");
System.out.println(res);
}
publicstaticvoidmain(String[]args){
test();
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。