账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    js请求gbk接口的问题
    25
    0

    前端是vue,后端是java,现在后端接口是gbk的,前端如何改成能够正常调用接口?尤其是请求参数如何转gbk?

    网上找到了这段

    1、对传入的GBK字符串,要用数据流接收,具体到angularjs中,$http 请求中需要覆盖参数responseType , responseType: "arraybuffer",
    
    
    $http({
      method: "POST",
      responseType: "arraybuffer",
      url: "restcater/cenchain/findCenChain",
      data: branchlist
    })
    2、解析
    var x = new Uint8Array(resp.data);
    
    var str =new TextDecoder('gbk').decode(x);
    
    已经正常识别了。
    /////////////////////////////////////////////////////////
    3、UTF-8提交的数据转为GBK,要引用第三方JS库
    
    https://github.com/inexorabletash/text-encoding
    
    <script>
      // var TextEncoderOrg = window.TextEncoder;
      // ... and deactivate it, to make sure only the polyfill encoder script that follows will be used
      window.TextEncoder = null;
    </script>
    <script src="lib/text-encoding/encoding-indexes.js"></script>
    <script src="lib/text-encoding/encoding.js"></script>
      //获取GBk编码的int8数组 
    var uint8array =  new TextEncoder("gbk",{ NONSTANDARD_allowLegacyEncoding: true }).encode(string);
     // 放入blob中准备上传
     var blob=new Blob([uint8array],{type:"text/plain"});

    但实际使用UTF-8提交的数据转为GBK这个似乎没有用啊,转出来得到的uint8array 是个数组,调用接口参数还需要进行des加密,需要变成字符串,这又要怎么做呢?

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 深情迎风散 普通会员 1楼

      在JavaScript中,我们可以使用Fetch API来发送GET请求到GBK(GB2312)的接口。以下是一个简单的示例,展示了如何发送GET请求到GBK接口:

      javascript fetch('https://api.example.com/gbk-api/data') .then(response => response.text()) .then(data => { // 处理响应数据 console.log(data); }) .catch(error => { // 处理请求失败的错误 console.error(error); });

      在这个示例中,我们使用fetch()函数发送GET请求到https://api.example.com/gbk-api/data,并指定请求的Content-Type为application/json。然后,我们使用.then()方法处理响应数据,将响应文本内容解析为JSON并将其打印到控制台。

      注意,fetch()函数默认返回一个Promise,所以我们需要使用.then()方法来处理响应。如果请求失败,.catch()方法将被用于捕获和处理错误。

      此外,fetch()函数默认返回一个Promise,所以我们需要在.then()方法中传递一个函数来处理Promise。在这个例子中,我们将处理响应数据,并将其打印到控制台。

      需要注意的是,gbk-api/data需要是一个实际的GBK接口地址,这通常需要通过后端API来获取。如果你的接口地址是通过HTTP或HTTPS发送的,你需要使用相应的HTTP方法(如GET、POST等)和请求头(如Content-Type、Authorization等)来发送GET请求。例如:

      javascript fetch('https://api.example.com/gbk-api/data?utf8=utf-8') .then(response => response.text()) .then(data => { // 处理响应数据 console.log(data); }) .catch(error => { // 处理请求失败的错误 console.error(error); });

      在这个示例中,我们添加了请求头Content-Type:application/json,这是用于告诉浏览器我们发送的是JSON数据。然后,我们将请求的utf8=utf-8替换为实际的GBK编码,以确保我们发送的是UTF-8格式的GBK数据。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部