java http请求,对方接收到乱码

问题描述

我在main方法中执行的时候没有问题,可以正常调用对方的接口,但是通过web容器访问,调用对方的接口,我传入的中文参数过去,他那边就乱码了,求解,代码和main中的一模一样StringBuilderrequestXmlBuilder=newStringBuilder();requestXmlBuilder.append("<?xmlversion="1.0"encoding="UTF-8"?>");requestXmlBuilder.append("<orders>");//订单信息requestXmlBuilder.append("<order>");requestXmlBuilder.append("<order_serial_no>113111119</order_serial_no>");requestXmlBuilder.append("<khddh>113111119</khddh>");//发货方信息requestXmlBuilder.append("<sender>");requestXmlBuilder.append("<name>bb</name>");requestXmlBuilder.append("<company>cc</company>");requestXmlBuilder.append("<city>nn</city>");requestXmlBuilder.append("<address>yy</address>");requestXmlBuilder.append("<postcode>ii</postcode>");requestXmlBuilder.append("<phone>13929449322</phone>");requestXmlBuilder.append("<mobile>13929449322</mobile>");requestXmlBuilder.append("<branch></branch>");requestXmlBuilder.append("</sender>");//收货方信息requestXmlBuilder.append("<receiver>");requestXmlBuilder.append("<name>kk</name>");requestXmlBuilder.append("<city>上海市,上海市,闵行区</city>");requestXmlBuilder.append("<address>上海市,上海市,闵行区七莘路3588号</address>");requestXmlBuilder.append("<postcode>221435</postcode>");requestXmlBuilder.append("<phone>021-8592369</phone>");requestXmlBuilder.append("<mobile>13929449322</mobile>");requestXmlBuilder.append("<branch></branch>");requestXmlBuilder.append("</receiver>");//商品信息requestXmlBuilder.append("<weight>20</weight>");requestXmlBuilder.append("<items>");requestXmlBuilder.append("<item>");requestXmlBuilder.append("<name>kk</name>");requestXmlBuilder.append("<number>2</number>");requestXmlBuilder.append("<remark>lll</remark>");requestXmlBuilder.append("</item>");requestXmlBuilder.append("</items>");requestXmlBuilder.append("<remark>i</remark>");requestXmlBuilder.append("</order>");requestXmlBuilder.append("</orders>");Stringline="";try{StringfirstResponse="";/**制造和发送数据*///打开连接URLurl=newURL(apiUrl);HttpURLConnectionconnection=(HttpURLConnection)url.openConnection();connection.setDoOutput(true);connection.setRequestMethod("POST");connection.setRequestProperty("Charset","UTF-8");OutputStreamWriterout=newOutputStreamWriter(connection.getOutputStream(),"UTF-8");//记录发出报文日志Stringbase64Data=newString(newBase64().encode(requestXmlBuilder.toString().getBytes()));//签名内容Stringvalidation=base64Data+parternId+passWord;validation=DigestUtils.md5Hex(validation);//encode编码parternId=URLEncoder.encode(parternId,"UTF-8");base64Data=URLEncoder.encode(base64Data,"UTF-8");validation=URLEncoder.encode(validation,"UTF-8");//查询StringqueryString="partnerid="+parternId+"&version="+version+"&request="+request+"&xmldata="+base64Data+"&validation="+validation;System.out.println(queryString);out.write(queryString);out.flush();out.close();//获取服务端的反馈InputStreamin=connection.getInputStream();BufferedReaderreader=newBufferedReader(newInputStreamReader(in,"UTF-8"));while((line=reader.readLine())!=null){firstResponse+=line+"n";}in.close();//记录接收报文日志System.out.println("结果:"+firstResponse);Stringmail_no=this.findValueFromResponse(firstResponse,"mail_no");Stringstatus=this.findValueFromResponse(firstResponse,"status");Stringpdf_info=this.findValueFromResponse(firstResponse,"pdf_info");JSONArrayobj=JSONArray.fromObject(pdf_info);JSONObjecto=JSONObject.fromObject(obj.getJSONArray(0).get(0));System.out.println(o.get("package_wdjc"));if("1".equals(status)){//success}//System.out.println(firstResponse);//System.out.println(mail_no);}catch(IOExceptione){//e.printStackTrace();}catch(Exceptione){//e.printStackTrace();}

解决方案

解决方案二:
检查一下编码格式一样不
解决方案三:
是一样的,我在main方法中跑,都可以正常,但是在web环境下,调用就不行了
解决方案四:
统一一下编码,一般乱码的问题都是由编码不一致造成的!
解决方案五:
穿参数的时候设置编码格式,接受参数的时候同样要设置编码格式,另外也要和你跑的环境一致
解决方案六:
英文也乱吗?你http抓包看看数据。
解决方案七:
你本地测试依赖的是本地ide编码,web方式就依赖web服务器编码了。
解决方案八:
转码问题,确定接收方的编码格式和你传输过去信息的编码格式一致
解决方案九:
引用6楼fangmingshijie的回复:

你本地测试依赖的是本地ide编码,web方式就依赖web服务器编码了。

对方也是utf-8呢我的也是utf-8
解决方案十:
让@云中小神仙看看,他肯定知道。
解决方案十一:
检查下编码格式,然后发送报文的地方两次decode,然后接收方两次encode
解决方案十二:
URL传递中文参数,默认格式为ISO-8859-1,一般在接收该参数时,如果不进行编码,得到的会是乱码。接收参数时将参数转换,例如:Stringresult=newString(name.getBytes("ISO-8859-1"),"utf-8");你试试呗!
解决方案十三:
将你的java文件用txt编辑器打开,改为UTF-8编码的文件,然后运行下试试
解决方案十四:
他乱码了,你纠结个毛啊!!!!!!!!!让他拿出你发送的内容不是UTF-8的证据。
解决方案十五:
不要在代码中使用中文,做个资源国际化啊
解决方案:
url参数乱码,改服务器配置URIEncoding=utf-8试试呢
解决方案:
请问楼主的问题找到解决方案了么,能否分享一下?
解决方案:
全统一uft-8就可以Strings2=newString(s1.getBytes(“GBK”),"utf-8");<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%>request.setCharacterEncoding("UTF-8");
解决方案:
楼主找到解决办法了吗。遇到了相同的问题
解决方案:
叫他那边给Tomcat的配置文件server,xml<ConnectorconnectionTimeout="20000"port="8083"protocol="HTTP/1.1"redirectPort="8443"URIEncoding="UTF-8"/>
解决方案:
看接口那边是什么编码的。自己后台转一下吧。
解决方案:
如果你用的是get的方式过去的不管是否编码一样都是话乱码的他在接收到数据的时候要自己转码

时间: 2024-11-02 06:43:00

java http请求,对方接收到乱码的相关文章

中文字符串显示乱码-java前端jquery接接收中文字符串乱码问题

问题描述 java前端jquery接接收中文字符串乱码问题 服务端:@RequestMapping(value="/detail/modSelect", method = {RequestMethod.POST}) public @ResponseBody String mod(@RequestBody String reqParam){ //修改请求处理 System.out.println("修改请求发送到此"); System.out.println(reqP

java发送HttpClient请求及接收请求结果过程的简单实例_java

一. 1.写一个HttpRequestUtils工具类,包括post请求和get请求 package com.brainlong.framework.util.httpclient; import net.sf.json.JSONObject; import org.apache.commons.httpclient.HttpStatus; import org.apache.http.HttpResponse; import org.apache.http.client.methods.Htt

java HttpClient 请求乱码

问题描述 java HttpClient 请求乱码 java HttpClient 4.3.6的jar包为什么我get post 请求中文乱码还有怎么请求的时候怎么带参数我这样写有什么问题没有现在的情况就是乱码 public static void get() { try { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet httpget = new HttpGet(""http://api.a

java web请求和响应中出现中文乱码问题的解析_java

说明:在计算机中保存的一切文本信息是以一定的编码表(0,1,0,1)来保存我们所认识的字符(汉字或英文字符),由字符到计算机存储的二进制过程是编码,由读取二进制到文本的过程称为解码.而字符编码有多种不同的编码表,所以,如果编码格式和解码格式不是同一个码表就会出现乱码.想要避免出现乱码,需要使保存和读取时使用相同的码表. 在java web编程中经常会出现乱码,现在详细讲解一下如何进行设置,避免乱码 1 网页编码 在编写网页的时候,需要指定网页的编码格式,使用<meta http-equiv=&quo

JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用

JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例,我们暂时不讲了,我们直接来重点吧,关于JAVA的网络请求是怎么实现的?当然是HTTP协议,但是不可否认,他的概念和思想都是我们必须去涉及的,包括后面的tcp和socket等,好吧,我们开车吧! 一.JAVA网络请求概述 关于JAVA的网络请求,我们大致的可以分为以下几个分类 网络模式 OSI TCP

java前台传中文到后台乱码问题,还有浏览器的差异

问题描述 java前台传中文到后台乱码问题,还有浏览器的差异 前台通过url的形式传中文参数,后台用 String parvalue = new String( request.getParameter("parvalue").getBytes("ISO8859-1"), "utf-8"); 这样接受,在谷歌浏览器上没问题,但在IE浏览器,QQ浏览器上却是乱码. 然后换个方式,前台url += "&area=" + e

java怎么请求https获取响应的文件流呢?

问题描述 java怎么请求https获取响应的文件流呢? 现在有一个https的地址,请求这个地址后返回一个文件流,试着用了httpclient发送https请求,然后在返回的http实体中httpEntity.getContent获取到了一个Inputstream,接收了这个流后,没有任何东西返回. 有什么其他的办法吗? 解决方案 确认后台是否返回数据流了 解决方案二: 先查看一下返回了数据没,用其它测试工具看是否也没返回 解决方案三: 把流的内容读出来,输出到控制台或者文件中看看.

我使用Tomat做Java WEB开发,总是时不时出现乱码问题,我现在想彻底搞定乱码问题,请教大家,

问题描述 我使用Tomat做Java WEB开发,总是时不时出现乱码问题,我现在想彻底搞定乱码问题,请教大家,我应该如何做? 解决方案 这是因为你没有搞懂乱码产生的原因:乱码产生的原因是由于每一个环节所使用的编码不一致,如页面编码,请求编码,数据库存贮的编码,只有保证它们都是同一编码才不会出现乱码.我一般推荐你使用utf-8编码.对于使用Tomcat的话,一般做好以下几步就可以如你所说地彻底搞定乱码问题:1.设置Tomcat的request编码,这要配置Tomcat的server.xml文件,找

线程-Tomcat7,httpasyncclient-4.0.1,给自己发get请求,接收不到

问题描述 Tomcat7,httpasyncclient-4.0.1,给自己发get请求,接收不到 Tomcat7中启动一个线程和主服socket通信,在该线程中用httpasyncclient给本Tomcat发送一个get请求.现在问题是执行了一段时间后,tomcat接收不到该请求,其他的浏览器发过来的请求都可以接收到.也不清楚是请求发送失败还是tomcat出问题了.不知道是什么原因导致的. 正常情况下,httpasyncclient发送该请求,打印的日志如下: [exchange: 70]