1.发送Json格式的Post请求
(1)Post调用
string PostUrl="http://IP:端口/AAA/BBB/CCC";
string id="123";
string Name="小黑";
JObject patientinfo = new JObject();
JArray ids = new JArray();
ids.Add(id);
patientinfo["ids"] = ids;
patientinfo["Name"] = Name;
string sendData = JsonConvert.SerializeObject(patientinfo);
//eg: 发送Url需要的格式:sendData={"ids":[123],"Name":小黑}
string resultData = Post(sendData, PostUrl);
(2)Post方法
#region Post请求
/// <summary>
/// http Post请求
/// </summary>
/// <param name="parameterData">参数</param>
/// <param name="serviceUrl">访问地址</param>
/// <param name="ContentType">默认 application/json , application/x-www-form-urlencoded,multipart/form-data,raw,binary </param>
/// <param name="Accept">默认application/json</param>
/// <returns></returns>
public string Post(string parameterData, string serviceUrl, string ContentType = "application/json", string Accept = "application/json")
{
//先根据用户请求的uri构造请求地址
//string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri);
//创建Web访问对象
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl);
//把用户传过来的数据转成“UTF-8”的字节流
byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(parameterData);
myRequest.Method = "POST";
//myRequest.Accept = "application/json";
//myRequest.ContentType = "application/json"; // //Content-Type: application/x-www-form-urlencoded
myRequest.AutomaticDecompression = DecompressionMethods.GZip;
myRequest.Accept = Accept;
//myRequest.ContentType = ContentType;
myRequest.ContentType = "application/json; charset=UTF-8";
myRequest.ContentLength = buf.Length;
myRequest.MaximumAutomaticRedirections = 1;
myRequest.AllowAutoRedirect = true;
//myRequest.Headers.Add("content-type", "application/json");
//myRequest.Headers.Add("accept-encoding", "gzip");
//myRequest.Headers.Add("accept-charset", "utf-8");
//发送请求
Stream stream = myRequest.GetRequestStream();
stream.Write(buf, 0, buf.Length);
stream.Close();
//通过Web访问对象获取响应内容
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
//通过响应内容流创建StreamReader对象,因为StreamReader更高级更快
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
//string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有编码问题就用这个方法
string returnData = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾
reader.Close();
myResponse.Close();
return returnData;
}
#endregion
2.带参数的Post请求
(1)Post调用
string PostUrl="http://IP:端口/AAA/BBB/CCC";
Dictionary<string, string> dic=new Dictionary<string, string>();
dic.Add("Id","123");
dic.Add("Name","笑笑");
string resultData = Post(dic, PostUrl);
(2)Post方法
#region post带参数的请求
/// <summary>
/// 指定Post地址使用Get 方式获取全部字符串
/// Post是从服务器上传送数据
/// </summary>
/// <param name="url">请求Url地址</param>
/// <param name="dic">拼接Url的字段</param>
/// <returns></returns>
public static string Post(string url, Dictionary<string, string> dic)
{
#region 【网上查的】
//eg:http://IP:端口/AAA/BBB/CCC//发送对应参数
#region 创建Web访问对象
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
//req.Method = "POST";
//req.ContentType = "application/x-www-form-urlencoded";
req.Method = "POST";
req.AutomaticDecompression = DecompressionMethods.GZip;
req.ContentType = "application/json; charset=UTF-8";
#endregion
#region Post添加并拼接参数,形成对应Url地址
StringBuilder builder = new StringBuilder();
int i = 0;
if (dic.Count > 0)
{
foreach (var item in dic)
{
if (i > 0)
builder.Append("&");
builder.AppendFormat("{0}={1}", item.Key, item.Value);
i++;
}
}
#endregion
#region 发送请求
byte[] data = Encoding.UTF8.GetBytes(builder.ToString());
req.ContentLength = data.Length;
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(data, 0, data.Length);
reqStream.Close();
}
#endregion
#region 通过Web访问对象获取响应内容
string result = "";
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
Stream stream = resp.GetResponseStream();
//获取响应内容
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
result = reader.ReadToEnd();
}
return result;
#endregion
#endregion
}
#endregion