首页 > Web开发 > 详细

HttpURLConnection使用方法——无脸怪

时间:2015-10-21 19:14:32      阅读:206      评论:0      收藏:0      [点我收藏+]

java代码如下:(在这使用的jackson解析json数据,所以需要导入Jackson包)

package HttpURLConnection;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import com.fasterxml.jackson.databind.ObjectMapper;

public class Test {

    /**
     * 
     * 模拟android发送HTTP请求给服务器
     * 重点内容
     * 1、URL地址
     * 2、method=post
     * 3、发送参数为username
     * 4、获取服务器返回的JSON字符串
     */
    public static void main(String[] args) throws Exception{
        //目标地址
        String url_str = "http://127.0.0.1/AndroidStudy/HttpUrlConn";
        URL url = new java.net.URL(url_str);;
        HttpURLConnection conn = null;
        //打开地址,返回连接类HttpURLConnection
        conn=(java.net.HttpURLConnection) url.openConnection();
        //对连接进行配置
        conn.setDoOutput(true);  
        conn.setDoInput(true);  
        conn.setRequestMethod("POST");//GET
        //为了防止脏数据,禁止缓存
        conn.setUseCaches(false);
        
        //输出流
        OutputStream os =conn.getOutputStream();
        //数据输出流
        DataOutputStream dos=new DataOutputStream(os);
        //写比读简单,只写bytes
        dos.writeBytes("username="+URLEncoder.encode("小明", "UTF-8"));
        dos.flush();
        dos.close();
        if ( conn.getResponseCode() == HttpURLConnection.HTTP_OK ){
            System.out.println("服务器正常的,我准备读取服务器返回的JSON数据");
            //读取服务器返回的JSON
            //得到输入流  
            InputStream is = conn.getInputStream();
            //得到一个Reader
            InputStreamReader isr = new InputStreamReader(is,"UTF-8");
            //得到一个Buffer Reader,可以一行一行字符读取
            BufferedReader br = new BufferedReader(isr);
            //用于1行1行地读取,直到不能都为止
            String ReadOneline = null;
            //结果
            StringBuffer sb=new StringBuffer();            
            while((ReadOneline=br.readLine())!=null){  
                sb.append(ReadOneline); 
            }
            //result就是服务器返回的JSON字符串
            String result = sb.toString();
            ObjectMapper mapper = new ObjectMapper();
            User user = mapper.readValue(result, User.class);
            
            //System.out.println(result);
            System.out.println(user.getUsername()+",年龄"+user.getAge());
        }
        else{
            System.out.println("服务端有异常,我捕获了处理,提示客户端服务器在维护");
        }
        
    }

}

servlet代码如下:(bean类未列出)

package a003_httpUrlConnection;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.fasterxml.jackson.databind.ObjectMapper;

@WebServlet("/HttpUrlConn")
public class HttpUrlConn extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    public HttpUrlConn() {
        super();
        // TODO Auto-generated constructor stub
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        
        //1.解决乱码问题
        //2.解决缓存问题
        //http 1.1浏览器  
        response.setHeader("Cache-Control", "no-cache");
        //http 1.0浏览器
        response.setHeader("Prama", "no-cache");
        //提醒过期1.0,1.1都支持
        response.setDateHeader("Expires", 0);
        //控制输出流
        response.setCharacterEncoding("UTF-8");
        //告之浏览器
        response.setHeader("content-type","text/json;charset=UTF-8");
        //请求也指定
        request.setCharacterEncoding("UTF-8");
        
        
        
        
        String tmp_username = request.getParameter("username");
        System.out.println("客户端发送的username:"+tmp_username);
        
        User user = new User();
        user.setUsername(tmp_username);
        user.setAge(20);
        
        ObjectMapper mapper = new ObjectMapper();
        //JAVA对象转JSON,也叫[JSON序列化]
        String j = mapper.writeValueAsString(user);
        
        PrintWriter out = response.getWriter();
        out.println(j);
        out.close();
    }

}

 

HttpURLConnection使用方法——无脸怪

原文:http://www.cnblogs.com/princejia/p/4898440.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!