`

通过java模拟发送post数据

    博客分类:
  • java
 
阅读更多
public static String sendPost(String url, List<PostValue> parameters) { 
        String result = "";// 返回的结果 
        BufferedReader in = null;// 读取响应输入流 
        PrintWriter out = null; 
        StringBuffer sb = new StringBuffer();// 处理请求参数 
        String params = "";// 编码之后的参数 
        try { 
            // 编码请求参数 
            if(parameters.size() == 1){
                for(PostValue p:parameters){
                    sb.append(p.getKey()).append("=").append(p.getValue());
                }
                params = sb.toString(); 
            }else{
                for(PostValue p:parameters){
                    sb.append(p.getKey()).append("=").append(p.getValue()).append("&");
                }
                String temp_params = sb.toString(); 
                params = temp_params.substring(0, temp_params.length() - 1); 
            }
            // 创建URL对象 
            java.net.URL connURL = new java.net.URL(url); 
            // 打开URL连接 
            java.net.HttpURLConnection httpConn = (java.net.HttpURLConnection) connURL 
                    .openConnection(); 
            // 设置通用属性 
            httpConn.setRequestProperty("Accept", "*/*"); 
            httpConn.setRequestProperty("Connection", "Keep-Alive"); 
            httpConn.setRequestProperty("User-Agent", 
                    "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)"); 
            httpConn.setRequestProperty("Accept-Charset", "GBK");
            httpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=gbk");
            // 设置POST方式 
            httpConn.setDoInput(true); 
            httpConn.setDoOutput(true); 
            // 获取HttpURLConnection对象对应的输出流 
            out = new PrintWriter(httpConn.getOutputStream()); 
            // 发送请求参数 
            out.write(params); 
            // flush输出流的缓冲 
            out.flush(); 
            // 定义BufferedReader输入流来读取URL的响应,设置编码方式 
            in = new BufferedReader(new InputStreamReader(httpConn 
                    .getInputStream(), "GBK")); 
            String line; 
            // 读取返回的内容 
            while ((line = in.readLine()) != null) { 
                result += line+"\r\n"; 
            } 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } finally { 
            try { 
                if (out != null) { 
                    out.close(); 
                } 
                if (in != null) { 
                    in.close(); 
                } 
            } catch (IOException ex) { 
                ex.printStackTrace(); 
            } 
        } 
        return result; 
    }  

 如果没有设置

 httpConn.setRequestProperty("Accept-Charset", "GBK");
            httpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=gbk");

  的话,那么

out = new PrintWriter(httpConn.getOutputStream()); 提交到服务器端是以iso-8859-1的数据编码格式传递过去的
那么我们只能通过new String(value.getBytes("iso-8859-1"),"gbk")来的到正确的数据内容
分享到:
评论

相关推荐

    HTTP.zip_HTTP 调试_http socket_java http post

    模拟HTTP协议,Java 发送 http 请求 (get 与 post 方法请求 ) , 以下代码经本人亲自调试可用! 可以直接使用之。 注意:通过 BufferedReader 读取远程返回的数据时,必须设置读取编码,否则中文会乱码!

    教务管理系统-微信小程序(供学习和参考)

    使用Java的HttpClient网络编程工具来模拟登录学校PC端正方教务管理系统,通过发送Get或Post请求,抓取返回的HTTP数据包并分析,获取目标数据,将获取的数据处理后在微信小程序上面呈现给用户,并再将用户提交的数据...

    http json 模拟请求工具

    http json 模拟请求工具,可以发送http请求,并且可选择发送请求的类型,可以发送json数据。

    java获取http请求的Header和Body的简单方法

    下面小编就为大家带来一篇java获取http请求的Header和Body的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Postman使用详解(文档+视频+postman请求导出文件+后台java工程演示资源).rar

    3、重点配置环境变量和全局参数、配置自增或时间戳随机参数、请求Cookies设置、Get和Post请求后端用什么注解介绍(@RequestParam、@PathVariable、@RequestBody,详细介绍postman发送{}、[] 格式数据,后端10多种...

    java-servlet-api.doc

    当你的应用存储数据到Session中,或从Session中清除数据,Servlet都会通过HttpSessionBindingListener检杳什么类被绑定或被取消绑定。这个接口的方法会通报被绑定或被取消绑定的对象。 绪言 这是一份关于2.1版...

    Wechat-Public-Tool:一款模拟微信公众号登录并发消息给粉丝用户的软件,包括文字和图片

    1.打开微信网页登录页面,进入浏览器开发者模式,观察在点击登录的时候浏览器的请求(get 或者 Post)了哪些数据。 2.微信公众号的网页版登录是通过https,因此要用到sha1加密和ssl安全连接,不懂的自行百度并参照代码...

    php 使用ActiveMQ发送消息,与处理消息操作示例

    本文实例讲述了php 使用ActiveMQ发送消息,与处理...//下面这些数据,实际中是用户通过前端页面post来的,这里只做演示 $obj-&gt;username = 'test'; $obj-&gt;password = '123456'; //发送一个注册消息到队列,我们这里模拟

    Http接口测试要你命3000—CDSpace V1.1

    CDSpace既能模拟Http客户端发送请求(类似postman),也可以模拟Http服务端接受请求,基本满足Http接口测试所能遇到的所有场景:支持Get/Post/Put/Delete方法,支持自定义消息头,本地文件管理数据方便传阅。...

    Java学习笔记-个人整理的

    {1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{subsection.1.3.1} {1.4}数据类型}{23}{section.1.4} {...

    Android开发案例驱动教程 配套代码

    15.4.4 再次探讨HttpClient的POST请求 395 15.5 云端应用案例优化 400 本章小结 404 第16章 Google Map和定位服务 405 16.1 MyMap服务系统案例 405 16.2 Android Google Map 406 16.2.1 申请Google Map ...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    6.5 通过短信发送email通知——BroadcastReceiver与Intent整合 6.6 手机拨接状态——PhoneStateListener之onCallStateChanged 6.7 有来电,发送邮件通知——PhoneStateListener与ACTION_SEND 6.8 存储卡剩余多少...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    6.5 通过短信发送email通知——BroadcastReceiver与Intent整合 6.6 手机拨接状态——PhoneStateListener之onCallStateChanged 6.7 有来电,发送邮件通知——PhoneStateListener与ACTION_SEND 6.8 存储卡剩余多少容量...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    6.5 通过短信发送email通知——BroadcastReceiver与Intent整合 6.6 手机拨接状态——PhoneStateListener之onCallStateChanged 6.7 有来电,发送邮件通知——PhoneStateListener与ACTION_SEND 6.8 存储卡剩余多少容量...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    6.5 通过短信发送email通知——BroadcastReceiver与Intent整合 6.6 手机拨接状态——PhoneStateListener之onCallStateChanged 6.7 有来电,发送邮件通知——PhoneStateListener与ACTION_SEND 6.8 存储卡剩余多少容量...

    Python入门网络爬虫之精华版

    这种情况属于post请求,即先向服务器发送表单数据,服务器再将返回的cookie存入本地。 data = {'data1':'XXXXX', 'data2':'XXXXX'} Requests:data为dict,json import requests response = requests.post(url=...

    OPhone应用开发权威指南(黄晓庆)

    9.3.3 使用POST方法上传附件 382 9.3.4 从服务器端下载图片 390 9.4 设计C/S通信数据格式 392 9.4.1 对象序列化 396 9.4.2 使用XML传输对象 401 9.5 小结 409 第10章 高级通信技术 410 10.1 电话 410 10.1.1 电话...

    Google Android SDK开发范例大全的目录

    6.5 通过短信发送email通知——BroadcastReceiver与Intent整合 6.6 手机拨接状态——PhoneStateListener之onCallStateChanged 6.7 有来电,发送邮件通知——PhoneStateListener与ACTION_SEND 6.8 存储卡剩余多少容量...

    Google+Android+SDK开发范例大全

    6.4 开始与停止系统服务——Service与Runnable整合并用 6.5 通过短信发送email通知——BroadcastReceiver与Intent整合 6.6 手机拨接状态——PhoneStateListener之onCallStateChanged 6.7 有来电,发送邮件通知——...

Global site tag (gtag.js) - Google Analytics