c# webservice [webmethod] 获取 json数据(字符流) 以及请求头 headers 的值

第一次写博客,简单说明以下原因。新手工作半年,用的是C# webservice请求,比较老的技术。有可能我的理解还不是很深,暂且这样认为把。目前做的项目都是请求别人接口,request.ContentType = "application/x-www-form-urlencoded;charset=utf-8";  定义的传输报文体,当然还有其他类型的。但是怎么接收却没做过,网上百度也是没有明确的回答。下面举例子。

 ** 获得请求的json数据,注意不是json字符串。下面代码展示(包括header)

 HttpResponse Response;
    private void setEncoding()
    {
        Response = HttpContext.Current.Response;
        WebClientSelf.setUTF8Encoding(Response);
    }

[WebMethod(Description = "带header的提交json数据")]
    public void get()
    {
        setEncoding();    
        string result = "";
        string name = "{\"code\":\"hellow word!\"}";
        byte[] quest = System.Text.Encoding.UTF8.GetBytes(name);       
        string url = "http://localhost:11263/webservice/common.asmx/A";
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        request.ProtocolVersion = HttpVersion.Version10;
        request.Method = "POST";
        request.ContentType = "application/json";
        request.Headers.Add("uid", "admin");
        request.Headers.Add("pwd", "admin888");
        request.ContentLength = quest.Length;
        using (Stream reqStream = request.GetRequestStream())
        {
            reqStream.Write(quest, 0, quest.Length);
            reqStream.Close();
        }
        HttpWebResponse resp = (HttpWebResponse)request.GetResponse();
        Stream stream = resp.GetResponseStream();
        //获取响应内容  
        using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
        {
            result = reader.ReadToEnd();
        }
        Response.Write(result);
        Response.End();


    }

接收方法:

 [WebMethod(Description = "获取实体流")]
    public string A()
    {


       
        Stream s = HttpContext.Current.Request.InputStream;//获得json 字符流,    
        string header = HttpContext.Current.Request.Headers["uid"];//获得header 下uid的值

//还原数据流
        byte[] b = new byte[s.Length];
        s.Read(b, 0, (int)s.Length);
        string jsontext=Encoding.UTF8.GetString(b);
        return "header=" + header + "|" + "json=" + jsontext;


    }


  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值