网络套接字是我的同事用 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 协议(protocol)。
最佳答案
我对 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, 0, encoded.Length);
return ws.SendAsync(buffer, WebSocketMessageType.Text, true, 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();
}
}
如果某些内容无法编译或存在于 WP8 中,只需找到等效的内容即可。
关于c#-4.0 - 如何使用 ClientWebSocket 类通过 Windows Phone 8 上的 Web 套接字发送/接收消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24450109/