C# 中使用POST调用接口的几种传参方式

说明:第一、二种的例子是直接调用接口,接口的说明如下:

第3、4种的例子是调用别人的接口,然后写成自己的webapi(.asmx页面)。

1.第一种:参数是以url的形式追加到地址后面


string posturl="http://api.daiyicloud.com/asmx/smsservice.aspx?name=n01&pwd=B16F57451A&content=您好,您当前等待办理的1651还有1位,请留意叫号信息等侯办理。&mobile=15972035243&stime=&type=pt&sign=旅游局政务服务中心"   

private void PostRequest(string posturl)
        {
            byte[] byteArray = Encoding.UTF8.GetBytes(posturl);
            HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(posturl);
            webRequest.Method = "POST";
            webRequest.ContentType = "application/x-www-form-urlencoded";
            webRequest.ContentLength = byteArray.Length;
            Stream newStream = webRequest.GetRequestStream();
            newStream.Write(byteArray, 0, byteArray.Length);
            newStream.Close();
            HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
            StreamReader php = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
            string Message = php.ReadToEnd();
            System.Console.Write(Message);
            System.Console.Read();
        }

2.第二种:参数是form-data的形式。

 public string PostRequest(string url,string name,string pwd,string content,string mobile,string stime,string sign,string type)
        {
            using (var client = new HttpClient())
            {
                using (var Content = new MultipartFormDataContent())
                {
                    client.BaseAddress = new Uri(url);
                    var txtContent = new ByteArrayContent(Encoding.UTF8.GetBytes(name));
                    txtContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
                    {
                        Name = "name"
                    };
                    Content.Add(txtContent);
                    txtContent = new ByteArrayContent(Encoding.UTF8.GetBytes(pwd));
                    txtContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
                    {
                        Name = "pwd"
                    };
                    Content.Add(txtContent);


                    txtContent = new ByteArrayContent(Encoding.UTF8.GetBytes(content));
                    txtContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
                    {
                        Name = "content"
                    };
                    Content.Add(txtContent);

                    txtContent = new ByteArrayContent(Encoding.UTF8.GetBytes(mobile));
                    txtContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
                    {
                        Name = "mobile"
                    };
                    Content.Add(txtContent);


                    txtContent = new ByteArrayContent(Encoding.UTF8.GetBytes(type));
                    txtContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
                    {
                        Name = "type"
                    };
                    Content.Add(txtContent);


                    txtContent = new ByteArrayContent(Encoding.UTF8.GetBytes(sign));
                    txtContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
                    {
                        Name = "sign"
                    };
                    Content.Add(txtContent);

                    txtContent = new ByteArrayContent(Encoding.UTF8.GetBytes(stime));
                    txtContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
                    {
                        Name = "stime"
                    };
                    Content.Add(txtContent);

                    var result = client.PostAsync("", Content).Result;
                    //this.textBox1.Text = result.Content.ReadAsStringAsync().Result;
                    return result.Content.ReadAsStringAsync().Result;
                }
            }

        }

3.第三种:参数是以x-www-form-urlencoded的形式传递

 [WebMethod]
        public string GetSsmInfo(string strSsm)
        {
            string sessionid = GetSessionId();
            string weburl = "http://58.33.97.180:8081/front/citizenCould/scanCertQrCode.do";
            string result = "";
            try
            {
                //入参
                string data = "sessionId="+ sessionid +
                    "&certQrCode="+ strSsm +
                    "&pos=市文旅局&use=取号机叫号";

                byte[] byteArray = Encoding.UTF8.GetBytes(data);
                HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(new Uri(weburl));
                webRequest.Method = "POST";
                webRequest.ContentType = "application/x-www-form-urlencoded";
                webRequest.ContentLength = byteArray.Length;
                Stream newStream = webRequest.GetRequestStream();
                newStream.Write(byteArray, 0, byteArray.Length);
                newStream.Close();

                //接收返回信息:
                HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
                StreamReader aspx = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
                string sendTxt = aspx.ReadToEnd();

                JObject jo = JObject.Parse(sendTxt);
                result = jo["result"].ToString();
            }
            catch (Exception ex)
            {
                //sendTxt = ex.ToString();
                sendTxt = "获取接口错误";
                //wt.WriteMsg(ex.ToString(), "SendTxtSessionId");
            }
            return result;
        }

4.第四种:参数以application/json的形式传递

 [WebMethod]
        public string SsmInfo(string data)
        {
            string serviceAddress = "http://218.242.70.146/certificate/qrcode/scan/info/scanCertQrCode.do";
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serviceAddress);

            request.Method = "POST";
            request.ContentType = "application/json";
            //string strContent = "{ \"account\": \"" + account + "\",\"password\": \"" + pwd + "\"}";
            string strContent = data; //参数data的格式就是上一句被注释的语句
            using (StreamWriter dataStream = new StreamWriter(request.GetRequestStream()))
            {
                dataStream.Write(strContent);
                dataStream.Close();
            }
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            string encoding = response.ContentEncoding;
            if (encoding == null || encoding.Length < 1)
            {
                encoding = "UTF-8"; //默认编码  
            }
            StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(encoding));
            string retString = reader.ReadToEnd();
            //解析josn
            JObject jo = JObject.Parse(retString);
            //sessionId = jo["sessionId"].ToString();
            //return sessionid;
            return retString;
        }

  • 8
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值