`
jackyclein
  • 浏览: 9088 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

HTTP POST/GET FOR JAVA

阅读更多
问题概述:
前几天调试N久前的一个HTTP API,一个问题始终没有解决,当通过http get/post 方式传送一个中文字符时,在接收端不能正确读取字符串的问题,如下:
伪代码如下:
    String URL="http://127.0.0.1:8080/access.do";
    String content = java.net.URLEncoder.encode("中文测试","GBK");
     String params="id=1&content="+content;
通过encode后的字符串为"%D6%D0%CE%C4%B2%E2%CA%D4" 。

接收端输出语句如下:
    request.getParameter("content");
但打印出的字符串却不是"%D6%D0%CE%C4%B2%E2%CA%D4",而是其他被转义的字符串,导致不能正确decode成原有字符串。

解决方案
至今也不知以上的问题原因是什么。后来经对http get/post的研究,做了如下处理:
		String httpMethod = request.getMethod();
		//如果是get request,则用request.getQueryString()获取request information
		String requestInfo = "";
		BufferedReader in = null;
		if(httpMethod.equals("GET")){
			requestInfo = request.getQueryString(); 
		}else{		
		//如果是post request,则用BufferedReader获取request information
		 in = new BufferedReader(new InputStreamReader(
				request.getInputStream()));
		String line = "";
		StringBuffer stringValue=new StringBuffer();
		while ((line = in.readLine()) != null) {			 
			stringValue.append(line);
		}
		
		requestInfo = stringValue.toString();
		}
	    logger.info("requestInfo************* is :"+ requestInfo);
		String[] params = requestInfo.split("&");

//		获取params
		if(params!=null && params.length>0){
			for(int i=0;i<params.length;i++){
                            if((params[i].indexOf("content=")>=0) && params[i].split("=").length>1){
					content= (params[i].split("="))[1];
				}
                            }
                   }


注意
http GET/POST的字符流获取方式是不同的:
如果是get request,则用request.getQueryString()获取;
如果是post request,则用BufferedReader获取。

   
分享到:
评论

相关推荐

    HttpUtils Java get post 工具类

    总结,"HttpUtils Java get post 工具类"是用于简化Java中HTTP GET和POST请求的实用工具,它还支持小文件的发送。通过这个工具类,开发者可以快速地进行网络请求,而无需关注底层HTTP连接的复杂性。同时,通过测试类...

    java web学习_浅谈request对象中get和post的差异

    Java Web 学习之 Request 对象中 GET 和 POST 的差异 摘要:本文将对 Java Web 中 Request 对象中 GET 和 POST 方法的差异进行分析和比较,通过代码示例和输出结果,展示 GET 和 POST 方法的不同之处,并分析其优...

    java后台用GET POST方式提交封装类

    在Java后台开发中,HTTP请求是与服务器交互的基础,主要包括GET和POST两种主要方式。本文将深入探讨如何在Java中创建一个封装类来处理这两种请求,同时支持多参数和Cookie的处理。 首先,GET和POST是HTTP协议中的两...

    HTTP Programming Recipes for Java Bots

    《HTTP Programming Recipes for Java Bots》是一本专为Java开发者设计的指南,旨在帮助他们熟练地利用HTTP协议编程,创建高效、智能的自动化程序,即Java机器人。这本书深入浅出地探讨了如何通过Java来实现各种HTTP...

    get和post的区别

    在Web开发中,GET与POST是最常见的两种HTTP请求方式,它们在功能、安全性、数据传输等方面存在显著差异。本文将基于提供的文件内容对这两种方法进行详细解析。 #### 1. 基本概念 - **GET**:用于从服务器获取数据...

    http和WebService 调用接口Java代码demo

    Spring Boot项目中,RestTemplate是常用的HTTP客户端工具,可以方便地发起GET、POST等HTTP请求。例如,调用一个GET接口的简单代码如下: ```java @Autowired private RestTemplate restTemplate; public String ...

    java http 发送xml报文(java发送xml报文实例+参数)

    发送XML报文通常涉及到POST或GET请求,这里以POST请求为例,因为POST更适合发送大量数据,如XML文档。 1. **创建XML文档** 在发送XML之前,我们需要先构建XML文档。可以使用DOM(Document Object Model)或者SAX...

    android_http_get_post

    以下是一个简单的使用HttpURLConnection实现GET和POST请求的Java代码示例: ```java public class NetworkHelper { public static String makeGetRequest(String url) throws IOException { HttpURLConnection ...

    java后台请求http并保持Session

    下面将详细讲解这个过程,包括GET和POST方法的使用,以及Session管理。 首先,我们需要了解HTTP协议。HTTP是超文本传输协议,用于在Web上交换信息。它有两种主要的方法:GET和POST。GET方法用于获取资源,参数通过...

    TestHttpGet获取html获取网页get方法get网页get html demo java html post.7z

    4. 安卓系统下,AS IDE get post的使用方法,这个演示程序演示了如何用android java去访问网页,获取网页。 访问的是我的csdn主页,见程序中 streamToString getHtml HttpURLConnection conn = (HttpURLConnection) ...

    dxServlet.java处理Http Post的表单请求xml

    为了处理 POST 请求中的 XML 数据,`dxServlet.java` 使用了 SAX(Simple API for XML)解析器。SAX 是一种基于事件驱动的 XML 解析方式,非常适合大型文档的解析。它不一次性加载整个 XML 文档到内存中,而是随着...

    Java 使用HttpClient保持SESSION状态

    7. **执行其他需要保持SESSION状态的请求**:现在,当我们创建新的`HttpGet`或`HttpPost`请求时,HttpClient会自动处理Cookie,保持SESSION状态。 ```java HttpGet otherRequest = new HttpGet(...

    android get,post获取数据

    在Android开发中,GET和POST是两种常见的HTTP请求方法,用于从服务器获取或发送数据。本文将详细探讨这两种方法以及如何处理JSON和XML格式的数据。 首先,GET和POST的主要区别在于它们的使用场景和数据传输方式。...

    android之http协议编程)第三集hjava_http_post.zip

    POST请求是HTTP的五种基本请求方法之一,其他包括GET、PUT、DELETE和HEAD。POST请求通常用来向服务器提交数据,创建新的资源。 在Android中,我们可以通过多种方式实现HTTP POST请求。一种常见的方式是使用...

    HTTP Programming Recipes for Java Bots_with_code

    1. **HTTP基础**:包括HTTP请求方法(GET、POST、PUT、DELETE等)、HTTP状态码、头信息、Cookie管理等基本概念,这些都是构建Java HTTP客户端的基础。 2. **Java HTTP客户端API**:讲解如何使用Java内置的...

    DTU-DATACENTER.rar_DTU JAVA_DTU DATACENTER_java TCP/IP mysql_my

    该文件夹下project文件可用eclipse for java 直接打开编译。编译是需要注意的是将java-mysql的类库放置在C:\Program Files\Java\jre6\lib\ext路径下。本程序只用到这一个Java外部类库。 在源文件中,DataReceiver....

    JAVA通过HttpURLConnection 上传和下载文件的方法

    它可以用于发送HTTP请求,例如GET、POST、PUT、DELETE等。HttpURLConnection可以模拟浏览器的行为,向服务器发送请求,并获取服务器的响应。 二、JAVA通过HttpURLConnection上传文件的方法 下面是一个使用...

    java httpclient 模拟登录

    在Java编程中,HttpClient库是Apache提供的一款强大的HTTP客户端工具,用于执行HTTP请求,包括GET、POST、PUT等多种HTTP方法。在"java httpclient 模拟登录"这个场景下,我们通常会用到HttpClient来模拟用户登录网站...

    JAVA发送HTTP请求,返回HTTP响应内容

    这个类通常包含多个方法,用于执行GET和POST请求,并可能包含其他HTTP方法,如PUT、DELETE等。在提供的代码中,`HttpRequester`包含了发送GET和POST请求的方法,它们都调用了同一个内部方法`send()`进行处理。 `...

    java调用网易云音乐接口

    Apache HttpClient是一个强大的HTTP客户端库,支持多种HTTP方法(GET、POST等)和复杂的HTTP协议特性。在Java项目中,你可以通过Maven或Gradle来添加HttpClient依赖。 以下是一个简单的示例,展示如何使用...

Global site tag (gtag.js) - Google Analytics