mine.vue 5.7 KB

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