最近在C#上写HTTP服务,发现HpSocket这个控件下的封装了Http服务,但是测试程序是控制台的,不能直接拿到WinForm窗体中使用,经过反复测试整封装了HttpEasyClient代码,执行完毕SendPostInfo()方法后,获取类中的RecStr变量即可,还有一个坑,需要设置Async同步方式
? ? ? ? IHttpEasyClient httpClient = new HttpEasyClient(); ? ? ? ? public string RecStr = ""; ? ? ? ? public Km1HttpClient() ? ? ? ? { ? ? ? ? ? ? ParamClass.ReadParam(); ? ? ? ? ? ? httpClient.OnEasyMessageData += HttpClient_OnEasyMessageData; ? ? ? ? ? ? httpClient.Async = false; ? ? ? ? }
? ? ? ? public void SendPostInfo(string _path, string _token, string _body) ? ? ? ? { ? ? ? ? ? ? try ? ? ? ? ? ? { ? ? ? ? ? ? ? ? if (httpClient.Connect(ParamClass.HttpAddress, ParamClass.HttpPort)) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? var body = Encoding.UTF8.GetBytes(_body); ? ? ? ? ? ? ? ? ? ? if (httpClient.SendPost(_path + _token, new List<NameValue> ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? new NameValue { Name = "Connection", Value = "Keep-Alive" }, ? ? ? ? ? ? ? ? ? ? ? ? new NameValue { Name = "Content-Type", Value = "application/json;charset=utf-8" } ? ? ? ? ? ? ? ? ? ? }, body, body.Length)) ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? //发送 ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? httpClient.Wait(60000); ? ? ? ? ? ? } ? ? ? ? ? ? catch (Exception ex) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? LogHelper.Debug(ex); ? ? ? ? ? ? } ? ? ? ? }
? ? ? ? HttpParseResult HttpClient_OnEasyMessageData(IHttpEasyClient sender, byte[] data) ? ? ? ? { ? ? ? ? ? ? RecStr = Encoding.UTF8.GetString(data); ? ? ? ? ? ? Console.WriteLine(Encoding.UTF8.GetString(data)); ? ? ? ? ? ? httpClient.Stop(); ? ? ? ? ? ? return HttpParseResult.Ok; ? ? ? ? }
|