using System; using System.Collections.Generic; using System.IO; using System.Net; using System.Net.Http; using System.Net.Http.Formatting; using System.Net.Http.Headers; using System.Text; using System.Web.Http; using System.Web.Http.Cors; using System.Web.Http.SelfHost; namespace WebApi { /// /// /// public class InitServer { /// /// /// HttpSelfHostConfiguration config = null; /// /// /// HttpSelfHostServer server = null; /// /// /// /// public InitServer(int port) { config = new HttpSelfHostConfiguration($"http://localhost:{port}"); config.EnableCors(new EnableCorsAttribute("*", "*", "*")); config.MapHttpAttributeRoutes(); //config.Routes.MapHttpRoute( // name: "DefaultApi", // routeTemplate: "api/{controller}/{id}", // defaults: new { id = RouteParameter.Optional } //); // 自定义路由匹配到action config.Routes.MapHttpRoute( name: "API Default", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional } ); server = new HttpSelfHostServer(config); server.OpenAsync().Wait(); } /// /// /// /// public void Close() { server.CloseAsync(); } /// /// /// public class JsonContentNegotiator : IContentNegotiator { /// /// /// private readonly JsonMediaTypeFormatter _jsonFormatter; /// /// /// /// public JsonContentNegotiator(JsonMediaTypeFormatter formatter) { _jsonFormatter = formatter; } /// /// /// /// /// /// /// public ContentNegotiationResult Negotiate(Type type, HttpRequestMessage request, IEnumerable formatters) { var result = new ContentNegotiationResult(_jsonFormatter, new MediaTypeHeaderValue("application/json")); return result; } public static string Postring1(string url, string token, Dictionary dic) { string results = ""; //url = "http://172.16.22.15:8000/" + url; HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); req.Method = "POST"; req.ContentType = "application/x-www-form-urlencoded"; req.Headers.Add("Authorization", "Bearer " + token); StringBuilder builder = new StringBuilder(); int i = 0; foreach (var item in dic) { if (i > 0) builder.Append("&"); builder.AppendFormat("{0}={1}", item.Key, item.Value); i++; } byte[] data = Encoding.UTF8.GetBytes(builder.ToString()); req.ContentLength = data.Length; try { using (Stream reqStream = req.GetRequestStream()) { reqStream.Write(data, 0, data.Length); reqStream.Close(); } HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); Stream stream = resp.GetResponseStream(); //获取响应内容 using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)) { results = reader.ReadToEnd(); } return results; } catch (Exception e) { Console.WriteLine(e.Message); return e.Message; throw; } } } } }