The urlconnection class sets up a communication bridge between applications and web resources. These web resources are usually marked by URLs, this article describes how to use httpurlconnection to access web pages (send data streams) and read data streams.
In servlet, httpurlconnection is used to write parameters that require the POST method (get will expose parameters.
The requested servlet can also be written to the main method for testing.
Package com; import Java. io. bufferedreader; import Java. io. ioexception; import Java. io. inputstreamreader; import Java. io. outputstream; import Java. io. outputstreamwriter; import java.net. httpurlconnection; import java.net. URL; import javax. servlet. servletexception; import javax. servlet. HTTP. httpservlet; import javax. servlet. HTTP. httpservletrequest; import javax. servlet. HTTP. httpservletresponse; @ suppresswarning S ("serial") public class ioservlet extends httpservlet {/*** for parameter stream writing (post mode) that actively requests other interfaces */Public void doget (httpservletrequest request, httpservletresponse response) throws servletexception, ioexception {system. out. println ("begin send"); string inputparam = "<? XML version = \ "1.0 \" encoding = \ "UTF-8 \"?> <Page> <username> angel of love </usernaem> <age> 26 </age> </Page> "; Url url = NULL; httpurlconnection httpconn = NULL; outputstream output = NULL; outputstreamwriter outr = NULL; url = new URL ("http: // 127.0.0.1: 8888/iotest/readservlet"); httpconn = (httpurlconnection) URL. openconnection (); httpurlconnection. setfollowredirects (true); httpconn. setdooutput (true); httpconn. setrequestmethod ("Post"); httpconn. setreque Stproperty ("Content-Type", "text/XML"); httpconn. connect (); Output = httpconn. getoutputstream (); outr = new outputstreamwriter (output); // write the request parameter outr. write (inputparam. tostring (). tochararray (), 0, inputparam. tostring (). length (); outr. flush (); outr. close (); system. out. println ("Send OK"); int code = httpconn. getresponsecode (); system. out. println ("code" + code); system. out. println (httpconn. getresp Onsemessage (); // read the response content string scurrentline = ""; string stotalstring = ""; if (code = 200) {Java. io. inputstream is = httpconn. getinputstream (); bufferedreader reader = new bufferedreader (New inputstreamreader (is); While (scurrentline = reader. readline ())! = NULL) if (scurrentline. length ()> 0) stotalstring = stotalstring + scurrentline. trim ();} else {stotalstring = "remote server connection failed, error code:" + code;} system. out. println ("response:" + stotalstring);} public void dopost (httpservletrequest request, httpservletresponse response) throws servletexception, ioexception {This. doget (request, response );}}
Readservlet (equivalent to the server to be requested ):
Package com; import Java. io. ioexception; import Java. io. printwriter; import javax. servlet. servletexception; import javax. servlet. servletinputstream; import javax. servlet. HTTP. httpservlet; import javax. servlet. HTTP. httpservletrequest; import javax. servlet. HTTP. httpservletresponse; @ suppresswarnings ("serial") public class readservlet extends httpservlet {public void doget (httpservletrequest request, httpservl Etresponse response) throws ioexception {system. out. println ("begin read"); servletinputstream instream = request. getinputstream (); // get the int size of the HTTP request stream = request. getcontentlength (); // get the HTTP request stream Length byte [] buffer = new byte [size]; // cache the data read every time byte [] in_ B = new byte [size]; // The array used to store the result int COUNT = 0; int rbyte = 0; // read the while (count <size) {rbyte = instream cyclically. read (buffer); // The actual read length is stored in S of rbyte. Flj for (INT I = 0; I <rbyte; I ++) {in_ B [count + I] = buffer [I];} count + = rbyte;} system. out. println ("Result:" + new string (in_ B, 0, in_ B .length); response. setcontenttype ("text/html"); // set response to respond to Chinese data. setcharacterencoding ("GBK"); printwriter out = response. getwriter (); // response and response data out. write ("Your request has been successful. This is the response data! ");} Public void dopost (httpservletrequest request, httpservletresponse response) throws servletexception, ioexception {This. doget (request, response );}}
Open the page: http: // localhost: 8888/iotest/ioservlet
You will see the following output in the background, indicating that you have succeeded:
Begin sendsend okbegin readresult: <? XML version = "1.0" encoding = "UTF-8"?> <Page> <username> angel of love </usernaem> <age> 26 </age> </Page> Code 200 okresponse: the request is successful. This is the response data!
Download source code: here