C#   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c# – 在post请求中发送文件参数大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

1.发送Json格式的Post请求

@L_772_0@(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


大佬总结

以上是大佬教程为你收集整理的c# – 在post请求中发送文件参数全部内容,希望文章能够帮你解决c# – 在post请求中发送文件参数所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。