/// <summary> /// webreques 请求方式 /// </summary> /// <param name="Url"></param> /// <param name="XmlParams"></param> /// <returns></returns> public string RequestService(string Url, string XmlParams) { Encoding encoding = Encoding.UTF8; string responseData = String.Empty; WebRequest request = HttpWebRequest.Create(Url); byte[] bs = System.Text.ASCIIEncoding.ASCII.GetBytes(XmlParams); request.Method = "POST"; request.ContentType = "text/xml;charset=UTF-8"; request.ContentLength = bs.Length; //指定要调用http://localhost:32100/Service1.svc服务中的GetDataUsingDataContract方法 //http://tempuri.org/IService1/GetDataUsingDataContract(名称空间(http://tempuri.org/)/接口名称(IService1)/方法名(GetDataUsingDataContract)) //request.Headers["SOAPAction"] = "http://tempuri.org/IService1/GetDataUsingDataContract"; try { using (Stream reqStream = request.GetRequestStream()) { reqStream.Write(bs, 0, bs.Length); reqStream.Close(); } } catch (Exception ex) { //调试异常 使用 return ex.Message; } using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding)) { responseData = reader.ReadToEnd().ToString(); } } return responseData; } public static string PostAsync(string Url, string Xml, IDictionary<string, string> headers = null) { HttpClient client = new HttpClient() { Timeout = new TimeSpan(0, 2, 0) }; using (HttpContent content = new StringContent(Xml)) { content.Headers.ContentType = new MediaTypeHeaderValue("application/xml"); if (headers != null) { foreach (var item in headers) { content.Headers.Add(item.Key, item.Value); } } var task = client.PostAsync(Url, content); var rsp = task.Result; rsp.EnsureSuccessStatusCode(); // 将引发异常。 var tasktext = rsp.Content.ReadAsStringAsync(); return tasktext.Result; } }
httpclient 是在web4.5版本之后出现的 模拟Java的httpclient发送请求
异步
public static async Task<string> PostAsync(HttpClient client, string url, object data, IDictionary<string, string> headers = null) { var dataString = DataSerializer.SerizlizeToJSON(data); using (HttpContent content = new StringContent(dataString)) { content.Headers.ContentType = new MediaTypeHeaderValue(CONTENT_TYPE_JSON); if (headers != null) { foreach (var item in headers) { content.Headers.Add(item.Key, item.Value); } } var rsp = await client.PostAsync(url, content); rsp.EnsureSuccessStatusCode(); // 将引发异常。 var text = await rsp.Content.ReadAsStringAsync(); return text; } }