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,List cookies){ cookieStore.put(url.host(),cookies); } @Override publicList loadForRequest(HttpUrlurl){ List cookies=cookieStore.get(url.host()); returncookies!=null?cookies:newArrayList (){}; } } /** *@paramurl要请求的url *@paramparamsMappost的请求参数 *@returnpost的返回结果 */ publicStringpost(Stringurl,HashMap paramsMap){ FormBody.BuilderformBodyBuilder=newFormBody.Builder(); Set keySet=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"; HashMap paramsMap=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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。