移动反应问题的编码了问题,给了一服务编码,怎么用?????

博客分类:
前两天一段调用HTTP服务的脚本出了问题,仔细一看,发现是提供的HTTP服务在响应头里写了:
HTTP/1.1 200 OK
Server: xxxxxxxxxx
Content-Type: text/ charset=utf-8
Connection: close
Content-Length:2014
响应的头中声明了Content-Type,其中指定了charset=utf-8;但实际上响应中的文本却是GBK编码的。这使得原本我写的请求脚本出了问题。
依赖的Apache HttpClient如下:
pom.xml:
&dependency&
&groupId&org.apache.httpcomponents&/groupId&
&artifactId&httpcomponents-client&/artifactId&
&version&4.0&/version&
&/dependency&
&dependency&
&groupId&org.apache.httpcomponents&/groupId&
&artifactId&httpcomponents-core&/artifactId&
&version&4.0.1&/version&
&/dependency&
原本的脚本使用去发起请求,并通过自己实现一个与相似的,类似这样的:
import org.apache.http.client.HttpResponseE
import org.apache.http.client.ResponseH
import org.apache.http.client.methods.HttpG
import org.apache.http.impl.client.DefaultHttpC
import org.apache.http.util.EntityU
def httpClient = new DefaultHttpClient();
def makeResponseHandler(charset) {
{ response -&
def statusLine = response.statusL
if (statusLine.statusCode &= 300) {
throw new HttpResponseException(statusLine.statusCode, statusLine.reasonPhrase);
def entity = response.
entity ? EntityUtils.toString(entity, charset) :
} as ResponseHandler
def httpGet = new HttpGet(requestUrl);
def responseBody = httpClient.execute(httpGet, makeResponseHandler('GBK'));
原本要调用的那个HTTP服务返回的响应的头里面没有Content-Type,所以这样去使用就已经可以达到指定解析响应内容时使用的字符编码的目的了。
问题是那个HTTP服务现在带上了错误的Content-Type,而EntityUtils.toString(entity, defaultCharset)认为Content-Type中的charset比defaultCharset更优先,此时上面的脚本就达不到强制指定字符编码的目的了。
咋办呢?最直观的当然是自己把响应的内容的byte数组拿到手,然后自己想怎么处理就怎么处理:
import org.apache.http.client.HttpResponseE
import org.apache.http.client.ResponseH
import org.apache.http.client.methods.HttpG
import org.apache.http.impl.client.DefaultHttpC
import org.apache.http.util.EntityU
def httpClient = new DefaultHttpClient();
def makeResponseHandler(charset) {
{ response -&
def statusLine = response.statusL
if (statusLine.statusCode &= 300) {
throw new HttpResponseException(statusLine.statusCode, statusLine.reasonPhrase);
def entity = response.
def bytes = entity ? EntityUtils.toByteArray(entity) :
bytes ? new String(bytes, charset) :
} as ResponseHandler
def httpGet = new HttpGet(requestUrl);
def responseBody = httpClient.execute(httpGet, makeResponseHandler('GBK'));
不知道还有没有啥更好的办法呢?我对HttpClient还是太不熟悉了。
本来最好自然是提供HTTP服务的那边把响应头的信息修正,但这又要经过各种繁琐的流程,我在跟进的某工具却等不及了,只好hack一下 =_=
lwwin 写道真不好意思,呵呵,下次知道这个做什么用了^-^||
似乎比较类似make工具~
与其说像make,还不如说像…呃,这跟RubyGems也可以算像吧。至少普通的make是不帮忙抓依赖的,而POM会帮忙抓。
抓依赖美~ 以前经常因为依赖太多而又要手动配置心烦……
看到GROOVY语言的时候,水水真希望类C系列也有这么一套东西=x=!
兼容C++,又支持新特性……不知道有没有,以后有没有,C++0X还没看过……
真不好意思,呵呵,下次知道这个做什么用了^-^||似乎比较类似make工具~与其说像make,还不如说像…呃,这跟RubyGems也可以算像吧。至少普通的make是不帮忙抓依赖的,而POM会帮忙抓。
lwwin 写道FX大似乎是主力=v=+ 开发工具什么的?
好像例子里面没有那个POM也可以跑的嘛,关于Maven似乎需要了解一下先~
这年头跟Java程序员说依赖的包是什么,用Maven的POM格式来说也算是流行的做法吧 = =
真不好意思,呵呵,下次知道这个做什么用了^-^||
似乎比较类似make工具~
FX大似乎是主力=v=+ 开发工具什么的?好像例子里面没有那个POM也可以跑的嘛,关于Maven似乎需要了解一下先~这年头跟Java程序员说依赖的包是什么,用Maven的POM格式来说也算是流行的做法吧 = =
花了一整天,总算拼凑了个服务器然后跑出你那个问题- -不过还有一些细节问问:1) 所谓的“依赖的Apache HttpClient”是在客户端用的XML文件吗?2) HTTP response 那段是在Groovy的程序里面打印显示的么?(不用抓包)3) 不知道为啥bat在离开以后,里面设置的环境变量会被撤销……
@SETLOCAL ENABLEEXTENSIONS
@SETLOCAL ENABLEDELAYEDEXPANSION
@set "GROOVYPATH=."
@call path\add_classpath.bat E:\jLIBs\ApacheClient\httpcomponents-core-4.1\lib
@call path\add_classpath.bat E:\jLIBs\ApacheClient\httpcomponents-client-4.0.3\lib
::@echo current path : %GROOVYPATH%
在这里面打印echo是OK的,但是离开这个BAT以后似乎GROOVYPATH被重置了……1) 那两段XML片段是Maven的POM配置文件的依赖声明2) 是用curl -D来抓取的3) 唔,BAT我一直不够熟悉,回答不了…
RednaxelaFX
浏览: 2345692 次
来自: 海外
Xamarin workbook - .Net Core 中不 ...
allocatestlye1 顺序为
// Fields o ...
ph7.3 写道jdk8下 scanoops 时出现这个问题: ...
RednaxelaFX 写道AnonymMan 写道http: ...
对象的大小为什么不固定,还有域的个数与类型等信息不固定。是为啥 ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'博客分类:
package cn.itcast.web.
import java.io.F
import java.io.FileInputS
import java.io.IOE
import java.io.InputS
import java.io.OutputS
import javax.servlet.ServletE
import javax.servlet.http.HttpS
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpServletR
public class Demo3 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
//通知浏览器打开文件的类型
response.setHeader("content-type","image/jpeg");
//response.setHeader("content-type","application/msword");
File file = new File("d:\\a.jpg");
InputStream is = new FileInputStream(file);
OutputStream os = response.getOutputStream();//对应浏览器的输出流
byte[] buf = new byte[1024];
int len = 0;
while( (len=is.read(buf))&0 ){
os.write(buf,0,len);
is.close();
os.close();
浏览: 33891 次
来自: 广州
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'后使用快捷导航没有帐号?
订阅响应命令,数据的编码格式是什么?
&&最新回复: 16:03:12
订阅成功,但是我的IP地址是花生壳服务器的IP,我服务器应用不是使用浏览器,而是自己写的cs的应用。NB设备发送两字节数据(例如0x0701)我服务器接收到了如下16进制数据,使用各种编码方式解码都是乱码。发送一次,收到4条数据。请问我需要怎么解码,有压缩吗?
附件: 您需要
才可以下载或查看,没有帐号?
是需要在IoT平台上传你的profile和编解码插件的
北向接口问题 可以在oceanConnect版块提问:
是需要在IoT平台上传你的profile和编解码插件的
北向已经调通了,上传过了Profile和编解码插件。现在的问题是南向,我们的服务器订阅平台的消息,json解析不出来。乱码。
北向已经调通了,上传过了Profile和编解码插件。现在的问题是南向,我们的服务器订阅平台的消息,json解 ...
这种问题可以发在Oceanconnect板块。平台向应用推送的数据格式在API 接口里有详细样例描述。所以可以做如下检查:1.是不是订阅的设备数据变化的订阅类型:devicedatachanged
devicedataschanged?2.设备数据上报完成后,在平台可以看到正确的json数据吗?
本帖最后由 张谷男 于
14:59 编辑
这种问题可以发在Oceanconnect板块。平台向应用推送的数据格式在API 接口里有详细样例描述。所以可以做如 ...1、可以移帖吗?没看到移帖的按钮。2、我是在网页上订阅的,应该没有问题。3、可以看到正确的json数据
本帖子中包含更多资源
才可以下载或查看,没有帐号?
本帖最后由 张谷男 于
15:07 编辑
哦,对了,我的服务器有503的错误,我觉得是因为我的服务器不是浏览器造成的。问题不大,可以订阅成功。
本帖子中包含更多资源
才可以下载或查看,没有帐号?
订阅成功只是代表告诉平台什么类型的数据将来要实时推送给你的服务器,而不代表你的服务器一定能接收,推送论坛的胖友们总结了很多宝贵的经验,可以根据自己实际情况参考,比较期待分享花生壳穿透:
楼主你好。我用的也是花生壳,但是不知道回调地址怎填写。ip地址是花生壳得服务器,那么端口部分应该填写什么?
您需要登录后才可以回帖
* 是否包含第三方商业秘密:
第三方商业秘密
第三方商业秘密是指第三方不为公众所知悉、具有商业价值并经权利人采取保密措施的技术信息和经营信息,包括但不限于:产品的价格信息、路标规划、商务授权、核心算法和源代码等。如有疑问,请联系:(各社区公共邮箱)。
如果附件按钮无法使用,请将Adobe Flash Player 更新到最新版本!24小时热门版块排行榜&&&&
【悬赏金币】回答本帖问题,作者欧阳春雪将赠送您 3 个金币
(小有名气)
在线: 11.4小时
虫号: 1470282
注册: 专业: 食品加工技术
应用响应面进行配方优化,实际值不转化成编码可以吗?
应用响应面进行配方的优化,测得实验值就可以有数据分析。使用说明中有一步是转化成编码制,是必须要转化成编码吗?
& 猜你喜欢
已经有1人回复
已经有5人回复
已经有217人回复
已经有2人回复
已经有0人回复
已经有7人回复
已经有0人回复
已经有101人回复
已经有0人回复
已经有10人回复
已经有218人回复
& 本主题相关价值贴推荐,对您同样有帮助:
已经有138人回复
已经有5人回复
我是食品专业!
(小有名气)
送鲜花一朵
引用回帖:: Originally posted by ZUSTleeds at
一般是两张表,编码表和实际值表。
(正式写手)
在线: 268.6小时
虫号: 226988
注册: 专业: 生物
【答案】应助回帖
感谢参与,应助指数 +1
一般是两张表,编码表和实际值表。
& 本帖已获得的红花(最新10朵)
(著名写手)
在线: 218.6小时
虫号: 551252
注册: 性别: GG专业: 食品科学
【答案】应助回帖
感谢参与,应助指数 +1hsd3521: 回帖置顶
其实可以的,你要所有的数值都是实际值的
& 本帖已获得的红花(最新10朵)
人活着就要保持一种劳作的状态!
(小有名气)
送鲜花一朵
引用回帖:: Originally posted by
其实可以的,你要所有的数值都是实际值的
小木虫,学术科研互动社区,为中国学术科研免费提供动力
违规贴举报删除请发送邮件至:
广告投放与宣传请联系 李想 QQ:
QQ:&&邮箱:
Copyright &
MuChong.com, All Rights Reserved. 小木虫 版权所有为了避免服务器的响应信息在浏览器端显示为乱码,通常会使用()语句重新设置字符编码。_百度知道
为了避免服务器的响应信息在浏览器端显示为乱码,通常会使用()语句重新设置字符编码。
为了避免服务器的响应信息在浏览器端显示为乱码,通常会使用()语句重新设置字符编码。AResponse.setContentType();BResponse.setCharacterEncoding();CResponse.setPageCoding();DR...
为了避免服务器的响应信息在浏览器端显示为乱码,通常会使用()语句重新设置字符编码。A
Response.setContentType();B
Response.setCharacterEncoding();C
Response.setPageCoding(); D
Response.setCharset();
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
liulanglover
liulanglover
采纳数:3565
获赞数:31594
标准答案是B,另外,从英文翻译上也可以得到,重新设置字符编码,字符的英文是character,编码是encode。
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 移动反应问题服务编码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信