/// <summary> /// 根据指定方法执行请求,并返回原始Response /// </summary> /// <param name="method">http方法</param> /// <returns></returns> public HttpWebResponse Execute(Method method) { string url = string.Empty; //get方式直接拼接url if (method == Method.GET) { UrlToQuery(_url); url = this._url; if (_keyValues.Count > 0) { //分解参数 url = url + "?" + EasyHttpUtils.NameValuesToQueryParamString(_keyValues); } _request = WebRequest.Create(url) as HttpWebRequest; EasyHttpUtils.CopyHttpHeader(_tempRequest, _defaultHeaderRequest, _request); _request.Method = "GET"; _request.CookieContainer = _cookieContainer; WriteHeader(); } //post方式需要写入 else if (method == Method.POST) { url = _url; _request = _tempRequest; _request.CookieContainer = _cookieContainer; _request.Method = "POST"; EasyHttpUtils.CopyHttpHeader(_tempRequest, _defaultHeaderRequest, _request); WriteHeader(); if (_isMultpart) { EasyHttpUtils.WriteFileToRequest(_request, _keyValues); } else { if (string.IsNullOrEmpty(_request.ContentType)) { _request.ContentType = "application/x-www-form-urlencoded"; } string querystring = EasyHttpUtils.NameValuesToQueryParamString(_keyValues); //如果有自定义post内容,则写入自定义post数据,否则写入form if (_customePostData != null) { querystring = _customePostData; } //写入到post using (var stream = _request.GetRequestStream()) { byte[] postData = _postEncoding.GetBytes(querystring); stream.Write(postData, 0, postData.Length); // Request.ContentLength = postData.Length; } } } else if (method == Method.PUT) { UrlToQuery(_url); url = this._url; if (_keyValues.Count > 0) { url = url + "?" + EasyHttpUtils.NameValuesToQueryParamString(_keyValues); } _request = WebRequest.Create(url) as HttpWebRequest; _request.CookieContainer = _cookieContainer; WriteHeader(); EasyHttpUtils.CopyHttpHeader(_tempRequest, _defaultHeaderRequest, _request); _request.Method = "PUT"; } else if (method == Method.DELETE) { UrlToQuery(_url); url = this._url; if (_keyValues.Count > 0) { url = url + "?" + EasyHttpUtils.NameValuesToQueryParamString(_keyValues); } _request = WebRequest.Create(url) as HttpWebRequest; _request.CookieContainer = _cookieContainer; EasyHttpUtils.CopyHttpHeader(_tempRequest, _defaultHeaderRequest, _request); _request.Method = "DELETE"; WriteHeader(); } //Request.CookieContainer.Add(c); if (RequestInterceptor != null) { _response = RequestInterceptor.Invoke(_request); } else { _response = _request.GetResponse() as HttpWebResponse; } _cookieContainer.Add(_response.Cookies); if (_logLevel != EasyHttpLogLevel.None) { try { LogRequet(url, method); LogRespose(url, method); } catch (Exception e) { Console.WriteLine(e.StackTrace); } } return(_response); }