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(); } }