海关加签用的ukey加签方式,拼接报文
public class SignHelper
{
private const int REQUEST_TIME_WAIT = 200;
private const int TIME_OUT = 60000;
private const string URL = "ws://127.0.0.1:61232";
private static int m_lastRequestTime;
private static readonly object m_lockThis = new object();
public static State WebSocketSign(string jsonParamStr)
{
lock (m_lockThis)
{
if (Environment.TickCount - m_lastRequestTime < REQUEST_TIME_WAIT)
Thread.Sleep(REQUEST_TIME_WAIT);
m_lastRequestTime = Environment.TickCount;
}
WebSocket websocket = new WebSocket(URL);
State state = new State()
{
Parameter = jsonParamStr
};
websocket.Error += new EventHandler<SuperSocket.ClientEngine.ErrorEventArgs>((sender, e) =>
{
state.NoWait = true;
state.Code = "404";
state.Message = "Error:" + e.Exception.Message;
state.Data = string.Empty;
});
websocket.MessageReceived += new EventHandler<MessageReceivedEventArgs>((sender, e) =>
{
try
{
state.Message = "Success";
state.Data = e.Message;
Websocket_MessageReceived(websocket, state);
}
catch (Exception ex)
{
websocket.Close();
websocket.Dispose();
state.NoWait = true;
state.Code = "404";
state.Message = "Error:" + ex.Message;
state.Data = string.Empty;
}
});
websocket.Open();
int time = Environment.TickCount;
while (!state.NoWait && Environment.TickCount - time < TIME_OUT)
Thread.Sleep(1);
websocket.Close();
websocket.Dispose();
state.Code = "200";
if (Environment.TickCount - time > TIME_OUT)
state.Message = "request time out.";
return state;
}
private static void Websocket_MessageReceived(WebSocket webSocket, State state)
{
if (state.Data.Contains("握手成功"))
{
StringBuilder postJson = new StringBuilder();
pos