iOS和android,采用XMLHttpRequest进行Post访问,返回的数据中文都是乱码,英文和阿拉伯可以正常显示,更改setRequestHeader编码后,返回数据依然是乱码,代码如下
var xhr;
var callback;
function getFlusDataXHR(request_url, callback_in) {
callback = callback_in;
xhr = new plus.net.XMLHttpRequest();
xhr.onreadystatechange = xhrStatechange;
xhr.responseType = 'json';
xhr.open("GET", request_url);
xhr.setRequestHeader('Content-Type','application/json;charset=gbk');
// xhr.timeout=5000;
xhr.send();
setTimeout(abortFluxDataXHR, 6000);
}
function abortFluxDataXHR() {
if (xhr) {
xhr.abort();
xhr = null;
}
}
function xhrStatechange() {
if (xhr == null || xhr.readyState == null) {
if (callback) {
callback();
}
mui.alert("流量信息请求失败,xhr is null");
return;
}
switch (xhr.readyState) {
case 4:
// alert(xhr.getAllResponseHeaders());
if (xhr.status == 200) {
try {
var data = xhr.responseText;
flux_sum = 0;
flux_used = 0;
flowviewer_fluxinfo = {
usingPkg: [],
usedPkg: [],
unusedPkg: []
};
if (data == 'null') {
return;
}
fluxCalculator(data);
sortFluxInfo();
initFluxUI(callback);
} catch (e) {
if (callback) {
callback();
}
mui.alert('流量信息更新失败\n' + e.message);
}
} else {
if (callback) {
callback();
}
mui.alert("流量信息请求失败,错误代码\n" + xhr.readyState);
}
xhr = null;
break;
default:
break;
}
}
/**
根据手机号码获取流量信息
**/
function getFluxInfo(msisdn, callback) {
msisdn=15159207615;
getFlusDataXHR("http://211.143.192.138:8090/daf_ser/pkgflow?msisdn=" + msisdn + "&month=" + getCurrentMonth(), callback);
}
/**
获取当前月份
**/
function getCurrentMonth() {
var d = new Date();
var str = d.getFullYear();
var m = d.getMonth() + 1;
if (m < 10) {
m = '0' + m;
}
return str + '' + m;
}
4 个回复
Antecer
我也碰到了,使用HBuilder内带的例程xhr.html,只是改了下url地址,然后url指向的目标网站是gbk编码的,获取的数据全部显示为 带问号的方块!
1***@qq.com
你们找到解决方法没?我也遇到了啊。烦。
二八中医 (作者)
太早了,忘记当时怎么做了。。
bianyuan456
xhr.overrideMimeType( "charset=utf-8" );
试试这个