mine.vue 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. <template>
  2. <view class="content">
  3. <button type="default" open-type="getPhoneNumber" @getphonenumber="decryptPhoneNumber"
  4. @click="login">微信授权一键登录</button>
  5. <button @click="httpTest" style="margin-top: 10rps;">h5 axios http请求</button>
  6. <button @click="wxHttpTest" style="margin-top: 10rps;">miniprogram http请求</button>
  7. </view>
  8. </template>
  9. <script>
  10. import {common, user} from '../../proto/proto.js';
  11. //const protobuf = require("protobufjs/minimal");
  12. const axios = require('axios');
  13. let loginMessage = user.login_req.create({
  14. phone: Buffer.from('1234567890'),
  15. type: 1,
  16. verifyInfo: Buffer.from('123456a'),
  17. })
  18. //proto对象转buffer
  19. let buffer = user.login_req.encode(loginMessage).finish()
  20. console.log(buffer);
  21. let requestMessage = common.MsgWebsocket.create({
  22. version: 1,
  23. app: 1,
  24. server: 2,
  25. servant: 1005,
  26. data: buffer,
  27. })
  28. let requestBuffer = common.MsgWebsocket.encode(requestMessage).finish()
  29. console.log(requestBuffer);
  30. let typeStr = Object.prototype.toString.call(requestBuffer.buffer)
  31. console.log(typeStr);
  32. export default {
  33. data() {
  34. return {
  35. }
  36. },
  37. methods: {
  38. login() {
  39. },
  40. decryptPhoneNumber(e) {
  41. console.log(e.detail.errMsg)
  42. console.log(e.detail.iv)
  43. console.log(e.detail.encryptedData)
  44. },
  45. wxHttpTest() {
  46. let typeStr = Object.prototype.toString.call(requestBuffer.buffer)
  47. console.log(typeStr);
  48. let requestArrayBuf = new Uint8Array([...requestBuffer]).buffer
  49. uni.request({
  50. //url:'https://test.api1.radio1964.com:80/Ohplay/Web/HttpToTcp'
  51. url: 'http://60.205.190.38:80/Ohplay/Web/HttpToTcp',
  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: requestArrayBuf
  62. }).then((res) => {
  63. console.log(res);
  64. for (let response of res) {
  65. if (response !== null && response !== undefined && response.statusCode === 200) {
  66. try {
  67. let enc = new TextDecoder('utf-8')
  68. let res = JSON.parse(enc.decode(new Uint8Array(response.data))) //转化成json对象
  69. console.log(res);
  70. } catch (e) {
  71. //let resBuf = protobuf.util.newBuffer(response.data)
  72. let resBuf = Buffer.from(response.data)
  73. //console.log(resBuf.toString());
  74. let resMessage = common.MsgWebsocket.decode(resBuf)
  75. console.log(resMessage);
  76. let loginRspBuf = resMessage.data
  77. console.log(loginRspBuf);
  78. let loginRspMessage = user.login_rsp.decode(loginRspBuf)
  79. console.log(loginRspMessage);
  80. let obj = user.login_rsp.toObject(loginRspMessage, {
  81. longs: String,
  82. enums: String,
  83. })
  84. console.log(obj);
  85. console.log(`errorMessage = ${Buffer.from(loginRspMessage.errInfo.errorMessage).toString()}`);
  86. //console.log(Buffer.from(loginRspMessage.errInfo.errorMessage).toString());
  87. }
  88. }
  89. }
  90. }, (err) => {
  91. console.log(err);
  92. });
  93. },
  94. httpTest() { //测试http请求
  95. // let blob = new Blob([requestBuffer], {
  96. // type: 'buffer'
  97. // });
  98. // 将请求数据encode成二进制,encode是proto.js提供的方法
  99. function transformRequest(data) {
  100. return common.MsgWebsocket.encode(requestMessage).finish()
  101. }
  102. axios.create({
  103. timeout: 15000,
  104. method: 'post',
  105. headers: {
  106. "X-Requested-With": "XMLHttpRequest",
  107. "Content-Type": "application/octet-stream",
  108. //'Token': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVc2VyaWQiOjY1MDYzMywibmFtZSI6IjE4MTI2NDQ3MDE1IiwiZXhwIjoxNjIyODg0NTA1fQ.f7jIm0856-VnynA99MBoA2Dl1pePxI0HT_ECsUp5QHA'
  109. },
  110. responseType: 'arraybuffer',
  111. })
  112. .post('http://60.205.190.38:80/Ohplay/Web/HttpToTcp', requestMessage,{
  113. transformRequest:transformRequest
  114. })
  115. .then((response) => {
  116. console.log(response);
  117. if (response.status === 200 /* && response.data.byteLength>0*/ ) {
  118. try {
  119. let enc = new TextDecoder('utf-8')
  120. let res = JSON.parse(enc.decode(new Uint8Array(response.data))) //转化成json对象
  121. console.log(res);
  122. } catch (e) {
  123. //let resBuf = protobuf.util.newBuffer(response.data)
  124. let resBuf = Buffer.from(response.data)
  125. console.log(resBuf.toString());
  126. let resMessage = common.MsgWebsocket.decode(resBuf)
  127. let loginRspBuf = resMessage.data
  128. let loginRspMessage = user.login_rsp.decode(loginRspBuf)
  129. let obj = user.login_rsp.toObject(loginRspMessage, {
  130. longs: String,
  131. enums: String,
  132. })
  133. console.log(obj);
  134. console.log(`errorMessage = ${Buffer.from(loginRspMessage.errInfo.errorMessage).toString()}`);
  135. }
  136. }
  137. }, (err) => {
  138. console.log(err);
  139. });
  140. }
  141. }
  142. }
  143. </script>
  144. <style>
  145. .content {
  146. display: flex;
  147. flex-direction: column;
  148. align-items: center;
  149. justify-content: center;
  150. margin: 20rpx;
  151. }
  152. </style>