声明:一下信息只供学习使用~~
一、Http请求格式:
a. 请求方式、URI、Htpp协议的版本
b.请求头
c.请求正文
例如:
POST /hello.html HTTP/1.1 Accept:image/gif,image/jpeg,*/* Referer:http://localhost/login.html Accept-Language:en,zh-cn;q=0.5 Content-Type:application/x-www-form-urlencoded Accept-Encoding:gzip,deflate User-Agent:Mozilla/4.0(compatible;MSIE 6.0;Windows NT 5.0 Host:localhost Content-Length:43 Connection:Keep-Alive Cache-Control:no-cache username=yk3372&password=1234&submit=submit
一个Socket例子:
Socket socket =new Socket("www.javathinker.org",80); StringBuffer sb=new StringBuffer("GET "+"/index.jsp"+" HTTP/1.1/r/n"); sb.append("Host:www.javathinker.org/r/n"); sb.append("Accept:*/*/r/n"); sb.append("Accept-Language:zh-cn/r/n"); sb.append("Accept-Charset:GBK,utf-8;q=0.7,*;q=0.3/r/n"); sb.append("Accept-Encoding:gzip,deflate/r/n"); sb.append("User-Agent:Mozilla/4.0 (compatible;MSIE 6.0;Windows NT 5.0)/r/n"); sb.append("Connection:Keep-Alive/r/n/r/n"); OutputStream socketOut=socket.getOutputStream(); socketOut.write(sb.toString().getBytes()); socket.shutdownOutput(); InputStream socketIn=socket.getInputStream(); ByteArrayOutputStream buffer=new ByteArrayOutputStream(); byte[] buff=new byte[1024]; int len=-1; while((len=socketIn.read(buff))!=-1){ buffer.write(buff,0,len); } System.out.println(new String(buffer.toByteArray());
一个HTTP
URL url=new URL("http://www.baidu.com"); URLConnection connection=url.openConnection(); System.out.println(connection.getContentType()); System.out.println(connection.getContentLength()); System.out.println(connection.guessContentTypeFromName("index.html")); System.out.println(connection.getContent()); InputStream in=connection.getInputStream(); ByteArrayOutputStream buffer=new ByteArrayOutputStream(); byte[] buff=new byte[1024]; int len=-1; while((len=in.read(buff))!=-1){ buffer.write(buff,0,len); } System.out.println(new String(buffer.toByteArray()));
另一个范例,来自Java 网络编程精髓(孙卫琴)个人认为书挺好的,值得看一下
import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.net.URL; import java.net.URLConnection; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; public class HttpClient { public static void main(String[] args) throws Exception{ JFrame frame=new PostTestFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } class PostTestFrame extends JFrame{ /** * */ private static final long serialVersionUID = 1L; private static String[] books={ "Java面向对象编程", "精通Struts:基于MVC的JavaWeb设计与开发", "Java2认证考试指南与试题解析" }; public static String doPost(String urlString,Map<String,String> nameValueParis) throws Exception{ URL url=new URL(urlString); URLConnection connection =url.openConnection(); connection.setDoOutput(true); PrintWriter out=new PrintWriter(connection.getOutputStream()); boolean first=true; for(Map.Entry<String,String>pair:nameValueParis.entrySet()){ if(first)first=false; else out.print('&'); String name=pair.getKey(); String value=pair.getValue(); out.print(name); out.print('='); out.print(URLEncoder.encode(value,"GB2312")); } out.close(); InputStream in=connection.getInputStream(); ByteArrayOutputStream buffer=new ByteArrayOutputStream(); byte[]buff=new byte[1024]; int len=-1; while((len=in.read(buff))!=-1){ buffer.write(buff,0,len); } in.close(); return new String(buffer.toByteArray(),"GB2312"); } public PostTestFrame(){ setSize(400,300); setTitle("TEST"); JPanel northPanel=new JPanel(); add(northPanel,BorderLayout.NORTH); final JComboBox combo=new JComboBox(); for(int i=0;i<books.length;i++){ combo.addItem(books[i]); } northPanel.add(combo); final JTextArea result=new JTextArea(); add(new JScrollPane(result)); JButton getButton=new JButton("查看"); northPanel.add(getButton); getButton.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub new Thread(new Runnable(){ @Override public void run() { // TODO Auto-generated method stub final String SERVER_URL="http://www.javathinker.org/aboutBook.jsp"; result.setText(""); Map<String,String>post=new HashMap<String,String>(); post.put("title", books[combo.getSelectedIndex()]); try{ String xx=doPost(SERVER_URL,post); result.setText(xx); }catch(IOException e){ result.setText(""+e); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }).start(); } }); } }