To implement such a feature, the user accesses the Python API (algorithm, Java is not good) by clicking the button via Axios to get a result stored in the database and returned to the page.
But Python does not run on Tomcat, so the session is not shared within a domain, and because of security concerns, it is decided to invoke Python's API from Java as a client to get the data.
Start thinking about using Netty, but it doesn't feel necessary to use Java IO and net to do it, and then write a tool class for Java to access any Server API.
The code is as follows, the comments are written and can be used directly.
PackageCom.sdnuode.nuofe.util;ImportNet.sf.json.JSONArray;ImportNet.sf.json.JSONObject;ImportJava.io.*;Importjava.net.HttpURLConnection;ImportJava.net.URL;ImportJava.net.URLEncoder;ImportJava.util.*; Public classRequestutils {//GET request can only pass one API address parameter Public StaticArraylistrunrequest (String requesturl) {returnRunrequest (Requesturl, "GET",NewHashmap<>()); } //Access Server API, three parameters, API address, request method, data/Parameter//Params request pass Map,data request Pass JSON string Public StaticArraylistrunrequest (String Requesturl, String method, Object info) {StringBuffer buffer=NewStringBuffer ();//used to store return data Try{URL URL=NewURL (Requesturl);//Create a URL object//handling requests in the form of get and null values if(method = = "GET") {URL=NewURL (requesturl+ "?") +urlencode (info));//Stitching URL } if(Method! = "GET" && Method! = "POST") { return NewArraylist//only get and post requests are processed and other requests are not processed } //Configure connection PropertiesHttpURLConnection httpurlconn = (httpurlconnection) url.openconnection ();//Create a Connection objectHttpurlconn.setdoinput (true);//read in from Httpurlconntion, default TrueHttpurlconn.setdooutput (true);//Post pleading to httpurlconntion read out, default FlaseHttpurlconn.setusecaches (false);//POST request does not use cacheHttpurlconn.setrequestmethod (method);//Request method, default getHttpurlconn.setrequestproperty ("Connection", "keep-alive");//HTTP is recommended for long links, which improves response speedHttpurlconn.setrequestproperty ("Charset", "UTF-8");//character encodingHttpurlconn.setrequestproperty ("Content-type", "Application/json; Charset=utf-8");//Transfer JSON formatHttpurlconn.setrequestproperty ("Accept", "Application/json");//Receive type JSON//Httpurlconn.setrequestproperty ("Accept", "*/*")//violence method Settings Accept all types to prevent 415 from appearing if(method = = "POST") { byte[] writebytes = "". GetBytes (); if(Info! =NULL) {writebytes= Info.tostring (). GetBytes ();//byte stream of character flow} httpurlconn.setrequestproperty ("Content-length", String.valueof (Writebytes.length));//Set File lengthOutputStream Outwritestream = Httpurlconn.getoutputstream ();//creating an output stream objectOutwritestream.write (Info.tostring (). GetBytes ());//the contents of the output stream can be passed 3 parameters, from 0 to Len by defaultOutwritestream.flush ();//clear the data (may not finish after reading, buffer has left the possibility)Outwritestream.close ();//turn off the output stream} httpurlconn.connect ();//To start the connection, the configuration information must be set before the connection is completed intStatusCode = Httpurlconn.getresponsecode ();//Get Status Code if(StatusCode = = 200) {InputStream InputStream= Httpurlconn.getinputstream ();//Get input stream//stream of byte-flow charactersInputStreamReader InputStreamReader =NewInputStreamReader (InputStream, "Utf-8"); BufferedReader BufferedReader=NewBufferedReader (InputStreamReader);//read stream of charactersString str =NULL; //assigns a stream of characters read to Buffer,readline to read a line, and the current behavior is null, indicating that it has been read while(str = bufferedreader.readline ())! =NULL) {buffer.append (str); } //turn off Bufferreader and input streamsBufferedreader.close (); Inputstreamreader.close (); Inputstream.close (); InputStream=NULL;//emptying the input streamHttpurlconn.disconnect ();//Disconnect Connection } } Catch(Exception e) {e.printstacktrace (); } //convert buffer to ArrayList format if(Buffer.length ()! = 0) {Jsonarray Jsonarray=Jsonarray.fromobject (buffer.tostring ()); ArrayList<HashMap> arrayList =Jsonarrayobjecttoarraylisthashmap (Jsonarray); returnJsonarrayobjecttoarraylisthashmap (Jsonarray); }Else { return NewArraylist(); } } //GET request URL processing Public StaticString UrlEncode (Object params) {if(Params = =NULL){ return""; } StringBuilder SB=NewStringBuilder (); Map<String,Object> map =(MAP) params; for(Map.entry i:map.entryset ()) {Try{Sb.append (I.getkey ()). Append ("="). Append (Urlencoder.encode (i.getvalue () + "", "UTF-8"). Append ("&"); } Catch(unsupportedencodingexception e) {e.printstacktrace (); }} String str=sb.tostring (); if(Str.length ()! = 0) {str= Str.substring (0,str.length ()-1); } returnstr; } //jsonarray<object> Conversion arraylist Public StaticArraylistJsonarrayobjecttoarraylisthashmap (Jsonarray jsonarray) {ArrayList<HashMap> arrayList =NewArrayList (); for(inti = 0;i<jsonarray.size (); i++) {Jsonobject jsonobject=Jsonobject.fromobject (Jsonarray.get (i)); Iterator it=Jsonobject.keys (); while(It.hasnext ()) {HashMap HashMap=NewHashMap (); String Key=string.valueof (It.next ()); String value=(String) jsonobject.get (key); Hashmap.put (Key,value); Arraylist.add (HASHMAP); } } returnarrayList; }}
Java accesses other server-side APIs over HTTP.