`

通过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")来的到正确的数据内容
分享到:
评论

相关推荐

    后台模拟发送GET和POST请求

    本文将深入探讨如何利用Java的HttpClient库在后台模拟发送GET和POST请求,以及如何处理中文乱码问题。 首先,我们来理解GET和POST两种请求方法。GET请求通常用于获取服务器上的资源,它将参数附加到URL中,具有可...

    java后台实现 get post 提交.zip

    在Java后端开发中,GET和POST是两种最常见的HTTP请求方法,它们用于客户端与服务器之间的数据交互。了解如何在Java中实现这两种请求是至关重要的,尤其是对于构建Web应用程序。本资料"java后台实现 get post 提交....

    JAVA模拟网页发送请求

    本文详细介绍了如何使用Java模拟发送GET和POST请求,并对Cookie进行了处理。掌握了这些技术后,你就可以更灵活地与Web服务交互,实现自动化任务或数据抓取等功能。需要注意的是,在实际应用中还应考虑异常处理、编码...

    java HttpClient 发送GET请求和带有表单参数的POST请求教程例子

    ### Java HttpClient 发送GET请求和带有表单参数的POST请求详解 ...通过上述示例和解释,你应该能够理解和掌握如何使用Java HttpClient库来发送GET和POST请求,这对于开发Web应用程序或与API接口交互至关重要。

    java 模拟登录(含验证码)

    Java模拟登录的关键步骤包括: 1. **构建HTTP请求**:使用像`HttpURLConnection`或者第三方库如`Apache HttpClient`或`OkHttp`,创建一个指向登录页面的POST请求。你需要设置请求头,比如`Content-Type`通常设为`...

    java模拟post请求发送json的例子

    **方法一:使用HttpURLConnection发送POST请求** `HttpURLConnection`是Java标准库中的一个类,可以直接与HTTP服务器进行通信。以下是一个简单的例子: ```java public class HttpUtilTest { // 日志处理省略... ...

    java模拟post请求

    总的来说,Java模拟POST请求涉及到网络通信和HTTP协议的理解,通过Apache HttpClient库可以方便地实现这一功能。在处理API交互时,正确构建请求和解析响应是关键,这有助于确保数据的准确性和系统的稳定性。

    java模拟发送form-data的请求方式

    Java 模拟发送 Form-Data 的请求方式 ...通过创建 `MultipartEntity` 对象、添加多个部分、创建 `HttpPost` 对象并执行请求,可以模拟发送 Form-Data 格式的 HTTP 请求。该方法广泛应用于文件上传、表单提交等场景。

    java网络爬虫模拟登入抓取数据

    在"GetData_Demo"的示例中,可能包含了使用Java实现的模拟登录和数据抓取代码。通过分析和运行这个示例,你可以更深入地理解如何在实际项目中应用上述概念。这个过程可能涉及网络编程、HTML解析、HTTP协议、Cookie...

    java模拟微信浏览器访问.rar

    这个“java模拟微信浏览器访问.rar”压缩包中的主要文件是“MonitorWeixinBrowser.java”,我们可以推测这是一个Java程序,用于模拟微信内置浏览器的行为。下面将详细介绍这个主题的相关知识点。 1. **Java HTTP ...

    (完整版)JAVA利用HttpClient进行POST请求(HTTPS).doc

    在实际项目中,我们经常需要使用HttpClient来发送POST请求,以便与服务器进行数据交换。但是,当我们需要使用HTTPS协议时,事情变得复杂起来。HTTPS协议需要SSL/TLS证书来确保数据的安全,而HttpClient需要忽略证书...

    Java模拟get/post登陆(含验证码)

    本篇文章将深入探讨如何使用Java模拟GET/POST登录,特别是涉及验证码处理的情况。我们将主要关注Httpclient库的使用,以及可能涉及到的图像识别技术(OCR)。 首先,让我们了解一下HTTP的基本概念。HTTP是超文本...

    java处理文件上传的底层实现以及java模拟post协议实现文件上传

    本篇将详细探讨Java处理文件上传的底层实现,以及如何使用Java模拟POST协议来实现文件上传。 首先,我们需要理解文件上传的基本原理。在HTTP协议中,文件上传通常通过POST请求进行。当用户在表单中选择文件并提交时...

    模拟表单post提交

    GET用于获取资源,而POST用于向服务器发送数据,如用户填写的表单信息。Java作为一个强大的后端开发语言,提供了多种库来帮助开发者模拟表单的POST提交,其中之一就是Apache的HttpClient。 HttpClient是一个功能...

    Java模拟登录百度Demo

    本项目名为"Java模拟登录百度Demo",旨在通过Java编程语言实现对百度网站的自动登录功能。在这个教程中,我们将深入探讨如何使用Java来完成这一目标。 首先,模拟登录的核心是发送HTTP请求。在Java中,我们可以使用...

    java模拟淘宝登录源码

    Java模拟淘宝登录源码是一种常见的网络编程技术,主要用于自动化测试、数据抓取或者模拟用户行为。在这个场景中,我们使用的工具是HTTPClient库,这是一个强大的Java HTTP客户端应用编程接口,可以方便地处理HTTP...

    如何用selenium封装post参数提交示例

    # 构造POST数据 data = json.dumps(payload) # 将Python对象转换为JSON字符串 # 使用JavaScript执行POST请求 driver.get("data:text/html;charset=utf-8,&lt;script&gt;fetch('%s', {method: 'POST', body: '%s'});...

    java爬虫模拟登陆源码

    关于提供的"java模拟登陆"源码,它可能是实现了上述步骤的一个Java项目,可以直接在Eclipse中运行。在导入项目后,你可以通过阅读源代码了解具体实现细节,例如如何解析登录页面、构造请求、处理响应等。源码可能...

    HttpClient模拟get,post请求并发送请求参数(json等)

    它允许开发者模拟GET和POST等HTTP请求,并可以方便地发送JSON等数据作为请求参数。在本文中,我们将深入探讨如何使用HttpClient进行HTTP请求操作,以及如何处理JSON数据。 首先,我们需要引入HttpClient的相关依赖...

Global site tag (gtag.js) - Google Analytics