mine.vue 5.5 KB

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