Httpurlconnection requests write and read data streams)

Source: Internet
Author: User

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

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.