Web套接字是由我的同事用
javascript编写的.我设法连接.首先,我必须使用测试帐户登录应用程序.我必须通过json发送电子邮件和密码.我使用NuGet安装了Json.Net数据包.
我在我的研究中发现的一些代码是这样的,但我不明白如何使用该段发送我的数据.
- var buffer = new byte[1024];
- var segment = new ArraySegment<byte>(buffer);
- webSocket.SendAsync(segment,WebSocketMessageType.Text,true,CancellationToken.None);
当然,我可以使用一个对象
- User user=new User();
- user.Email="bla@bla.com";
- user.Password="pass";
- string json = JsonConvert.SerializeObject(user);
但它没有任何用处,因为SendAsync方法只接受段上的字节类型.
我想要的只是发送数据,如果登录成功,我应该收到有关用户的其他数据(采用Json格式).
作为旁注,我对Web套接字很新,我使用ASP.NET WEB API 2中的http协议.
解决方法
我不知道Windows Phone 8,但是你粘贴的代码看起来与普通的.NET ClientWebSocket类似,所以这里有一些例子:
- public static Task SendString(ClientWebSocket ws,String data,CancellationToken cancellation)
- {
- var encoded = Encoding.UTF8.GetBytes(data);
- var buffer = new ArraySegment<Byte>(encoded,encoded.Length);
- return ws.SendAsync(buffer,cancellation);
- }
- public static async Task<String> ReadString(ClientWebSocket ws)
- {
- ArraySegment<Byte> buffer = new ArraySegment<byte>(new Byte[8192]);
- WebSocketReceiveResult result = null;
- using (var ms = new MemoryStream())
- {
- do
- {
- result = await ws.ReceiveAsync(buffer,CancellationToken.None);
- ms.Write(buffer.Array,buffer.Offset,result.Count);
- }
- while (!result.EndOfMessage);
- ms.Seek(0,SeekOrigin.Begin);
- using (var reader = new StreamReader(ms,Encoding.UTF8))
- return reader.ReadToEnd();
- }
- }