.net调用接口(post)接收二进制文件

 /// <summary>  
    /// post方式提交  
    /// </summary>  
    /// <param name="postdata">传递的参数先调用datapost()方法</param>  
    /// <param name="url">访问的地址</param>  
    /// <param name="timeout">超时时间 6</param>  
    /// <returns></returns>  
    public static string Post(string postdata, string url, int timeout)
    {
        //ceShi.NetFramework.Helper.LogHelper.LogSave(string.Format("postdata: {0} url: {1} timeout:{2}", postdata, url, timeout));  
        System.GC.Collect();//垃圾回收,回收没有正常关闭的http连接  

        string Err = "";//返回的错误信息
        string result = "";//返回结果    

        HttpWebRequest request = null;
        HttpWebResponse response = null;
        Stream reqStream = null;

        try
        {
            //设置最大连接数  
            ServicePointManager.DefaultConnectionLimit = 200;
            //设置https验证方式  
            if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
            {
                ServicePointManager.ServerCertificateValidationCallback =
                        new RemoteCertificateValidationCallback(CheckValidationResult);
            }

            /*************************************************************** 
            * 下面设置HttpWebRequest的相关属性 
            * ************************************************************/
            request = (HttpWebRequest)WebRequest.Create(url);

            request.Method = "POST";
            request.Timeout = timeout * 1000;

            //这个在Post的时候,一定要加上,如果服务器返回错误,他还会继续再去请求,不会使用之前的错误数据,做返回数据  
            request.ServicePoint.Expect100Continue = false;



            //设置POST的数据类型和长度  
            request.ContentType = "application/json;charset=utf-8";
            byte[] data = System.Text.Encoding.UTF8.GetBytes(postdata);
            request.ContentLength = data.Length;



            //往服务器写入数据  
            reqStream = request.GetRequestStream();
            reqStream.Write(data, 0, data.Length);
            reqStream.Close();

            //获取服务端返回  
            response = (HttpWebResponse)request.GetResponse();





            StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
            result = sr.ReadToEnd().Trim();
            //result = System.IO.File.ReadAllText(@"C:\Users\Administrator\Desktop\test.txt");
            //FileStream fs1 = new FileStream("c:\\TestTxt.txt", FileMode.Create, FileAccess.Write);//创建写入文件 
            //StreamWriter sw = new StreamWriter(fs1);//创建队列
            //sw.WriteLine(result);//开始写入值
            //sw.Close();
            //fs1.Close();
            sr.Close();
        }
        catch (System.Threading.ThreadAbortException e)
        {
            Err += e.ToString();
            return Err;

        }
        catch (WebException e)
        {
            Err += e.ToString();
            return Err;

        }
        catch (Exception e)
        {
            Err += e.ToString();
            return Err;

        }
        finally
        {
            //关闭连接和流  
            if (response != null)
            {
                response.Close();
            }
            if (request != null)
            {
                request.Abort();
            }
        }
        while (true)
        {
            if (result != null && result.Trim() != "")
            {
                return result;
            }
            else
            {
                return Err;
            }
        }


    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值