mine.vue 5.5 KB

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