java python requests the session to achieve a similar function

How to achieve session function is similar to the python module requests it in java. java is also achievable with the java okhttp package can be achieved.

Adding its dependencies in pom.xml

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

  Followed by related java code:

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;
java.util.regex import. *;

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();
// // If a direct write type, which is written and saveFromResponse loadForRequest, without implementing CookieJar interface through normal operation, but will be significantly ide red, because cookieJsr method Bulider class instance in need CookieJar type. Duck class in addition to saving a few lines of code, not as collaborative above interface specification in understandability readability people, who knows what methods like a duck inside to write, write code in addition to their own people too.
    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>(){};
        }
    }

    /**
     * Url @param url to be requested
     * @Param paramsMap post request parameters
     * @Return post results returned
     */
    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();
    }

}

  

Guess you like

Origin www.cnblogs.com/linwenbin/p/11800132.html