httpClient.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. import {
  2. common,
  3. user
  4. } from '../proto/proto.js';
  5. const URL = 'http://60.205.190.38:80/Ohplay/Web/HttpToTcp';
  6. const protoMap = {}
  7. function getMsgWebsocket(version, server, servant, buffer) {
  8. return common.MsgWebsocket.create({
  9. version: version,
  10. app: 1,
  11. server: server,
  12. servant: servant,
  13. data: buffer,
  14. })
  15. }
  16. protoMap['1005'] = {
  17. requestEncode: function(request) { //登录请求的编码
  18. let loginMessage = user.login_req.create({
  19. phone: Buffer.from(request.data.phone),
  20. type: request.data.type,
  21. verifyInfo: Buffer.from(request.data.verifyInfo),
  22. })
  23. let buffer = user.login_req.encode(loginMessage).finish()
  24. let requestMessage = getMsgWebsocket(1, request.server, request.servant, buffer)
  25. let requestBuffer = common.MsgWebsocket.encode(requestMessage).finish()
  26. return new Uint8Array([...requestBuffer]).buffer
  27. },
  28. responseDecode: function(response) { //登录响应的解码
  29. let resBuf = Buffer.from(response.data)
  30. let resMessage = common.MsgWebsocket.decode(resBuf)
  31. let loginRspBuf = resMessage.data
  32. let loginRspMessage = user.login_rsp.decode(loginRspBuf)
  33. let obj = user.login_rsp.toObject(loginRspMessage, {
  34. longs: String,
  35. enums: String,
  36. })
  37. return obj
  38. }
  39. }
  40. // protoMap['1005'] = {
  41. // requestEncode : function(request){//请求的编码
  42. // }
  43. function post(request) {
  44. let encodeFun = protoMap[request.servant.toString()].requestEncode;
  45. console.log(typeof encodeFun);
  46. //if (typeof encodeFun === "function") {
  47. let requestBuffer = encodeFun(request)
  48. //}
  49. return uni.request({
  50. //url:'https://test.api1.radio1964.com:80/Ohplay/Web/HttpToTcp'
  51. url: URL,
  52. header: {
  53. "X-Requested-With": "XMLHttpRequest",
  54. "Content-Type": "application/x-protobuf",
  55. 'Token': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVc2VyaWQiOjY1MDYzMywibmFtZSI6IjE4MTI2NDQ3MDE1IiwiZXhwIjoxNjIyODg0NTA1fQ.f7jIm0856-VnynA99MBoA2Dl1pePxI0HT_ECsUp5QHA'
  56. },
  57. method: 'POST',
  58. timeout: 15000,
  59. dataType: 'protobuf',
  60. responseType: 'arraybuffer',
  61. data: requestBuffer
  62. }).then((res) => {
  63. for (let response of res) {
  64. if (response !== null && response !== undefined && response.statusCode === 200) {
  65. try {
  66. let enc = new TextDecoder('utf-8')
  67. let resJson = JSON.parse(enc.decode(new Uint8Array(response.data))) //转化成json对象
  68. console.log(resJson);
  69. return {
  70. code: resJson.code,
  71. msg: resJson.info
  72. }
  73. } catch (e) {
  74. let decodeFun = protoMap[request.servant.toString()].responseDecode
  75. // if (typeof decodeFun === "function") {
  76. let data = decodeFun(response)
  77. console.log(data);
  78. let code = 0
  79. let msg = "success"
  80. if(data.errInfo !== undefined){
  81. code = data.errInfo.errorCode
  82. msg = Buffer.from(data.errInfo.errorMessage).toString()
  83. }
  84. return {
  85. code: code,
  86. msg: msg,
  87. data: data
  88. }
  89. // }
  90. }
  91. }
  92. }
  93. })
  94. }
  95. module.exports = post