`
gcgmh
  • 浏览: 355872 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

httpclient post数据时,中文乱码问题

阅读更多

package com.baby.httpclient;

import java.io.IOException;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;

public class TestHttpClientPost {
	
	HttpClient httpClient = new HttpClient();
	String catId = "32";
	
	public void post() throws HttpException, IOException{
		
		
		String url = "http://localhost/phpcms/admin.php?mod=phpcms&file=content&action=add&catid=" + catId +"&modelid=1";
//		httpClient.getHostConfiguration().setHost("localhost", 80, "http");
		
		
		PostMethod postMethod = new UTF8PostMethod(url);
		postMethod.setRequestHeader("accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
	    postMethod.setRequestHeader("connection", "Keep-Alive");
	    postMethod.setRequestHeader("User-Agent","Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.4) Gecko/20091016 Firefox/3.5.4");
	    postMethod.setRequestHeader("Accept-Language", "zh-cn,zh;q=0.5");
	    postMethod.setRequestHeader("ContentType","application/x-www-form-urlencoded;charset=gbk");  
	    postMethod.setRequestHeader("Cookie", "guestbook=3; uuid=3E7AFDB3DAC6AF5601A9969B2C78441EACC2B5C5E2E5B301; PHPSESSID=dee161c5bb102a2f7b0137141ee53d9f; EUrIWifQukusername=phpcms; EUrIWifQukauth=AT8HVwFWAQMOAAUGWlcHWFAEWlYAUFBTAFRQB1dSAFYFUg%3D%3D; EUrIWifQukcookietime=0");
	    
	    String aaa = "info[catid]=[分类ID]&info[title]=[标签:标题]&info[keywords]=[标签:标题]&info[author]=[标签:作者]" +
	    		"&info[copyfrom]=[标签:来源]&add_introduce=1&introcude_length=200&auto_thumb=1" +
	    		"&auto_thumb_no=1&info[content]=[标签:内容]&info[paginationtype]=0&info[maxcharperpage]=10000" +
	    		"&status=99&info[inputtime]=[标签:时间]&info[posids]=-99]&info[posids][]=1&info[posids][]=2&info[posids][]=3&info[posids][]=4&info[posids][]=5" +
	    		"&info[groupids_view]=-99&info[template]=show&dosubmit=1";
	    NameValuePair[] data = {
	    		//发布的栏目的分类id号
	    		new NameValuePair("info[catid]",catId),
	    		new NameValuePair("info[title]","中国足协官员被警方带走 昔日所在队曾惹赌球丑闻---"),
	    		new NameValuePair("info[keywords]","足协官员 警方 赌球 丑闻"),
	    		new NameValuePair("info[author]","sina"),
	    		//文章来源
	    		new NameValuePair("info[copyfrom]","新浪网"),
	    		//是否截取内容前面的X个字到摘要(也就是description)里面,1表示截取,0表示不截取
	    		new NameValuePair("add_introduce","1"),
	    		//截取的汉字长度,这里是200个汉字
	    		new NameValuePair("introcude_length","200"),
	    		//是否获取内容的第X张图片作为标题图片,也就是生成一张缩略图,1表示生成缩略图,0表示不生成缩略图
	    		new NameValuePair("auto_thumb","1"),
	    		//指定内容里面的那一张图片,产生缩略图,这里指定的是第一张
	    		new NameValuePair("auto_thumb_no","1"),
	    		
	    		new NameValuePair("info[content]","<center><img alt=中国足协官员被警方带走昔日所在队曾惹赌球丑闻 src=http://i1.sinaimg.cn/ty/j/2009-11-06/U2463P6T12D4683237F44DT20091106093751.jpg border=1 ><br><img src=http://i0.sinaimg.cn/home/c.gif height=5 width=1 style=\"border:none;\"><br>范广鸣曾颁发中超奖杯 图片来源:体坛周报 <br><br></center>" +
	    				"<p>  被辽宁警方“协助调查”的队伍中,已经赫然出现了现中国足协官员的身影。此人是在足协负责商务工作的范广鸣,在中超联赛尾声时,经常由他将冠军奖杯交给夺冠俱乐部。</p>" +
	    				"<p>  范广鸣这次之所以被查,不是因为他在足协的工作,而是因为他与地方俱乐部的一些复杂关系。范广鸣在江湖人脉很旺,曾多次组织中国球队前往新加坡参加联赛,当年的新麒队、辽宁广原队就是他运作赴新加坡的,他还曾任新麒队总经理。后来,这几支球队都在新加坡惹上赌球丑闻。辽宁广原领队王鑫在新加坡被判赌球有罪回到中国,在这次扫赌行动中被带走接受调查。而范广鸣因为与这两队的渊源,这次也未能幸免,近日在武汉被警方带走。</p>"),
	    		//是否分页,正常不分页,0表示不分页,1表示分页
	    		new NameValuePair("info[paginationtype]","0"),
	    		//要是分页的话,内容里多少个字符开始分第二页
	    		new NameValuePair("info[maxcharperpage]","10000"),
	    		//99表示文章的状态时发布的
	    		new NameValuePair("status","99"),
	    		//发布时间
	    		new NameValuePair("info[inputtime]","2009-11-24 12:53"),
	    		//文章推荐位,-99表示全选,但基本没用,还是由下面的来控制
	    		new NameValuePair("info[posids]","-99"),
	    		//1:首页推荐 2:首页焦点 3:首页头条 4:列表页推荐 5:内容页推荐
	    		new NameValuePair("info[posids][]","1"),
	    		new NameValuePair("info[posids][]","2"),
	    		new NameValuePair("info[posids][]","3"),
	    		new NameValuePair("info[posids][]","4"),
	    		new NameValuePair("info[posids][]","5"),
	    		//文章阅读权限,-99表示全选
	    		new NameValuePair("info[groupids_view]","-99"),
	    		//内容页的模板
	    		new NameValuePair("info[template]","show"),
	    		//提交状态
	    		new NameValuePair("dosubmit","1")
	    };
		
	    postMethod.setRequestBody(data);
	    int statusCode = httpClient.executeMethod(postMethod);
	    System.out.println(statusCode);
	    //读取内容
	    byte[] responseBody = postMethod.getResponseBody();
	    //处理内容
	    System.out.println(new String(responseBody,"UTF-8"));
//	    System.out.println(new String(postMethod.getResponseBodyAsString().getBytes("ISO-8859-1"),"GB2312"));

	}
	
	
	public static void main(String[] args) throws HttpException, IOException {
		TestHttpClientPost t = new TestHttpClientPost();
		t.post();
	}
	
	
	
	//Inner class for UTF-8 support
    public static class UTF8PostMethod extends PostMethod{
        public UTF8PostMethod(String url){
            super(url);
        }
        @Override
        public String getRequestCharSet() {
            //return super.getRequestCharSet();
            return "gbk";
        }
    }  

	
}


分享到:
评论

相关推荐

    彻底解决httpClient乱码问题

    在处理中文字符时,由于编码不一致或者处理不当,往往会出现乱码现象。以下是一些关键的知识点和解决方案: 1. **字符编码设置**:HttpClient默认可能不会自动处理服务器返回的字符集,因此需要明确指定编码。在...

    HttpClient、乱码解决:实例

    通过上述步骤,你应该能有效地解决HttpClient在发送和接收数据时可能出现的乱码问题。在实际项目中,要结合服务器的响应情况灵活调整编码策略,确保数据传输的准确性。同时,了解并熟练掌握HttpClient的使用,对于...

    解决HttpClient中文乱码问题jar文件

    在Java开发中,HttpClient是一个广泛使用的HTTP客户端库...了解并应用以上知识点,可以帮助你有效地解决HttpClient在处理中文内容时的乱码问题。在实际项目中,确保每个环节都正确设置字符编码,是避免此类问题的关键。

    解决了中文乱码的http的get和post请求demo

    当HTTP请求发送含有中文字符的数据时,如果编码格式不一致或未正确指定,接收端就可能无法正确解码,从而导致乱码。HTTP协议本身并不规定字符编码,而是依赖于Content-Type头部来指定。 1. **GET请求中的中文乱码**...

    Java后端HttpClient Post提交文件流 及服务端接收文件流

    HttpClient Post提交多文件及多个普通参数,已经封装成工具类。 需传入 要请求的url 普通参数map 例 map.put("param1","张三"); 需要传入的文件流map 其中key为文件名 服务端接收无乱码。

    httpclient模拟post请求json封装表单数据的实现方法

    我们使用 `new StringEntity(jsonParam.toString(), "utf-8")` 创建了一个新的 `StringEntity` 实例,并指定字符编码为 UTF-8,以避免中文乱码问题。 设置 `StringEntity` 的内容类型为 `application/json`,这是...

    android客户端向服务器提交请求的中文乱码问题

    在Android客户端向服务器提交请求时,遇到中文乱码问题是一个常见的困扰。这通常是由于编码格式不一致或处理不当导致的。以下将详细解释这个问题的原因、影响以及如何解决。 首先,我们要明白字符编码的基本原理。...

    以httpclient方式提交数据

    本文将深入探讨如何使用HttpClient来提交数据,以及这两种方法的基本原理和实际应用。 1. **HttpClient简介** Apache HttpClient是一个开源项目,它提供了一个灵活且功能丰富的API,用于执行HTTP请求和处理响应。...

    httpclient发送post请求.docx

    在发送POST请求时,通常需要携带一些参数或者数据。这些数据可以添加到`HttpPost`对象的`Entity`中。然而,这段代码并没有显示如何添加请求参数,如果需要传递数据,可以使用`setEntity`方法,比如使用`StringEntity...

    http请求工具类HttpClientUtil,get,post请求(csdn)————程序.pdf

    HttpClientUtil 是一个用于发送 HTTP 请求的工具类,主要支持 GET 和 POST 方法。它使用了 Apache HttpClient 库,这是一个强大的 Java 客户端编程工具包,用于处理 HTTP 协议。以下是对类中关键方法和概念的详细...

    android POST数据遇到的UTF-8编码(乱码)问题解决办法

    在Android开发过程中,POST数据时可能会遇到编码问题,特别是涉及到非ASCII字符时,如中文、特殊符号等。这里我们详细探讨一下如何解决Android POST数据时遇到的UTF-8编码(乱码)问题。 首先,问题的根源在于...

    HttpClient 4文件上传

    在使用`MultipartEntity`时,可能会遇到中文字符乱码的问题。为了解决这个问题,可以通过指定`HttpMultipartMode.BROWSER_COMPATIBLE`模式以及指定字符集来解决: ```java MultipartEntity reqEntity = new ...

    httpclient 上传文件

    在本篇文章中,我们将深入探讨如何使用HTTPClient上传文件以及解决可能出现的乱码问题。 首先,让我们关注“httpclient 上传文件”。在HTTP协议中,文件上传通常涉及到POST请求,特别是当Content-Type设置为...

    java中文乱码解决之道(8)解决URL中文乱码问题Jav

    在Java编程中,中文乱码问题是一个常见的挑战,特别是在处理URL时。URL编码是导致中文乱码的关键因素,因为URL不支持非ASCII字符。本文将深入探讨如何在Java中有效地解决URL中文乱码问题。 首先,我们需要理解URL...

    httpclient连接第三方接口的实际项目案例

    本案例将详细介绍如何使用HttpClient进行GET和POST类型的请求,以及如何解决在处理过程中可能遇到的文件上传和中文乱码问题。 首先,我们需要导入HttpClient相关的依赖。在Maven项目中,可以在pom.xml文件中添加...

    一个使用HttpClient调用天气预报接口的例程

    在Android中,如果服务器返回的数据不是UTF-8编码,而使用了GBK,那么在处理文本时需要进行正确的字符编码转换,以防止乱码问题。 5. **源码解析**: - `HttpGet`对象:创建一个HttpGet实例,设置其请求URL,用于...

    HttpClient应用实例2

    本实例主要关注如何解决在使用HttpClient进行文件上传时可能出现的乱码问题。 在HttpClient中,乱码问题通常出现在两个方面:请求参数的编码和响应内容的解码。请求参数的编码涉及到URL编码,特别是包含非ASCII字符...

    HttpClient PostMethod 上传文件

    在本示例中,我们将深入探讨如何使用HttpClient的PostMethod来上传文件,以及处理Get和Post请求中的乱码问题。 一、HttpClient基础 HttpClient库提供了一套完整的API,允许我们构建复杂的HTTP请求。它支持GET、POST...

Global site tag (gtag.js) - Google Analytics