HttpWebRequest delete方法 C#

问题描述

小弟刚接触Json数据请求,最近用winform写一个桌面应用程序用到这方面的东西。然后先写了get,post方法,都没有问题;写到delete,发现连接在第二次delete之后,再GET数据的时候连接直接断掉。MSDN了一下,说方法里面只能有GET和POST,但是为什么我第一次DELETE是成功的?我很不能理解。忘大神指点迷津,是不是我哪里参数没设置?还是哪里资源没释放干净。下面贴一下我GET,POST和DELETE的代码。//这里是GET的方法namespaceClient100{classGetInformation{publicstaticstringGetstr;publicstaticstringaddress;publicstringGetHTTPInfo(){stringurlPath="http://"+IP.ip+"/api/v2/";urlPath+=address;intmillisecond=30000;WebResponseresponse=null;StreamReaderreader=null;try{HttpWebRequestrequest=(HttpWebRequest)WebRequest.Create(urlPath);request.Proxy=null;//关闭代理(重要)request.Timeout=millisecond;request.Method="GET";request.Accept="application/json";request.ContentType="application/json";request.ServicePoint.Expect100Continue=false;response=(WebResponse)request.GetResponse();reader=newStreamReader(response.GetResponseStream());Getstr=reader.ReadToEnd();//response.Close();//reader.Close();//request.Abort();}catch(Exceptionex){MessageBox.Show(ex.ToString());Getstr="";}returnGetstr;}}}//这里是POST方法namespaceClient100{publicclassPostTables{publicstaticstringPostHttp(string[]tableIds){HttpWebResponsehttpWebResponse=null;StreamReaderstreamReader=null;try{stringurl="http://"+IP.ip+"/api/v2/consumptions";HttpWebRequesthttpWebRequest=(HttpWebRequest)WebRequest.Create(url);Consumptioncp=newConsumption();intcount=tableIds.Count();cp.tables=newTable[count];for(inti=0;i<count;i++){cp.tables[i]=newTable();cp.tables[i].id=tableIds[i];}cp.people=12;httpWebRequest.Proxy=null;httpWebRequest.ContentType="application/json";httpWebRequest.Accept="application/json";httpWebRequest.Method="POST";httpWebRequest.Timeout=30000;byte[]btBodys=Encoding.UTF8.GetBytes(Serialize(cp));httpWebRequest.ContentLength=btBodys.Length;//httpWebRequest.KeepAlive=false;httpWebRequest.ServicePoint.Expect100Continue=false;httpWebRequest.GetRequestStream().Write(btBodys,0,btBodys.Length);httpWebResponse=(HttpWebResponse)httpWebRequest.GetResponse();streamReader=newStreamReader(httpWebResponse.GetResponseStream());stringresponseContent=streamReader.ReadToEnd();returnresponseContent;}catch(Exceptionex){ex.ToString();returnnull;}}publicstaticstringSerialize(objecto){System.Text.StringBuildersb=newSystem.Text.StringBuilder();System.Web.Script.Serialization.JavaScriptSerializerjson=newSystem.Web.Script.Serialization.JavaScriptSerializer();json.Serialize(o,sb);returnsb.ToString();}}}//这里是DELETE方法namespaceClient100{classDeleteTables{publicstaticstringstr;publicstaticHttpWebRequestrequest;publicstaticstringDeleteHttp(stringid){stringurlPath="http://"+IP.ip+"/api/v2/consumptions/";urlPath=urlPath+id;intmillisecond=30000;WebResponseresponse=null;StreamReaderreader=null;try{request=(HttpWebRequest)WebRequest.Create(urlPath);//request.Proxy=null;//关闭代理(重要)request.Timeout=millisecond;request.Method="DELETE";//request.Accept="application/json";//request.ContentType="application/json";request.ServicePoint.Expect100Continue=false;response=(WebResponse)request.GetResponse();reader=newStreamReader(response.GetResponseStream());str=reader.ReadToEnd();}catch(Exceptionex){MessageBox.Show(ex.ToString());str="";}returnstr;}}}

解决方案

解决方案二:
什么叫第二次get的时候连接直接断掉?
解决方案三:
文件都被你删除了,再get出问题不挺正常的?
解决方案四:
你是做点菜系统的吧
解决方案五:
看到Table了好像是桌子操作~~
解决方案六:
问题已经解决,response没释放,连接一直存在。释放掉就好了。
解决方案七:
不仅仅是“释放”的问题。你如果遇到过“并发访问”说明你至今还只是接触过一些过“小”的程序。不要滥用static。这就是一例。
解决方案八:
你如果遇到过“并发访问”说明你--->你如果还没有遇到过“并发访问”说明你
解决方案九:
@sp1234多谢大神提醒,小弟接触程序时间尚短,没做过什么大项目,以后还要多向你学习

时间: 2024-11-02 01:01:00

HttpWebRequest delete方法 C#的相关文章

web api-.net基于AttributeRouting的Web API路由设置的POST DELETE方法

问题描述 .net基于AttributeRouting的Web API路由设置的POST DELETE方法 今天研究基于AttributeRouting的Web API路由设置,下图是我写的代码 运行程序 ,验证GET方法,地址栏输入"http://localhost:32451/url/2"结果正确.但是同样的方法验证我写的POST和DELETE方法却报错,如图 请大神帮忙看一下,为什么错了?正确的该怎么写? 解决方案 浏览器输入地址,相当于get 如果你要post delete,必

httpwebrequest-C# HttpWebRequest delete请求

问题描述 C# HttpWebRequest delete请求 请问在请求或发送JSON数据的时候,有什么方法使用DELETE请求?MSDN上说HttpWebRequest只有GET和POST两种方法啊,但是我用DELETE方法成功了,但是第二次使用后,再使用GET请求就断开连接了,求大神解惑. 解决方案 Http请求之--C#的HttpWebRequest实现POST方式请求

对 File.Delete 方法的一点看法

在我写的"推箱子"程序的 DataFile 类中有下面这么一个方法: <!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->    /// <summary>     ///  删除通关步骤文件     /// </summary>     /// <param name="lev

Delete 方法

  删除指定的文件或文件夹. object.Delete( force ); 参数 object 必选项. 应为 File 或 Folder 对象的名称. force 可选项. Boolean 值,如果要删除设置了只读属性的文件或文件夹则为 True :否则为 False (默认). 说明 如果指定的文件或文件夹不存在,那么会产生一个错误. Delete 方法对于单个 File 或 Folder 产生的结果和使用 FileSystemObject.DeleteFile 或 FileSystemO

【译】ASP.NET MVC 5 教程 - 11:Details 和 Delete 方法详解

原文:[译]ASP.NET MVC 5 教程 - 11:Details 和 Delete 方法详解 在教程的这一部分,我们将研究一下自动生成的 Details 和Delete 方法. Details 方法 打开Movie控制器,找到Details方法. // // GET: /Movies/Details/5 public ActionResult Details(Int32 id) { Movie movie = db.Movies.Find(id); if (movie == null) {

【hibernate框架】核心开发接口-saveOrUpdate方法与delete方法

1.saveOrUpdate方法剖析 saveOrUpdate方法:分情况看是save还是update. 示例: public void testSaveOrUpdate(){ Teacher t=new Teacher(); t.setName("t21"); t.setTitle("低级"); t.setBrithday(new Date()); t.setZhicheng(ZhiCheng.C); Configuration cfg=new Configura

VBS教程:方法-Delete 方法_vbs

Delete 方法 删除指定的文件或文件夹. object.Delete force 参数 object 必选项.应为 File 或 Folder 对象的名称. force 可选项.Boolean 值.如果要删除的文件或文件夹的属性设置为只读属性,则该值为 True:否则为 False(默认). 说明 若指定文件或文件夹不存在,错误发生.有内容的文件夹和无内容的文件夹所使用的Delete方法无异.无论有无内容,指定文件夹皆被删除. 对 File 或 Folder 应用 Delete 方法的结果与

asp fso教程:ASP Delete 方法

asp fso教程:ASP Delete 方法 删除的方法删除指定的文件或文件夹. 语法 FileObject.Delete[(force)] FolderObject.Delete[(force)] Parameter Description force 任择.一个布尔值,表明是否有只读文件或文件夹都将被删除.真指出,只读文件/文件夹将被删除和虚假表示,它不会被删除.默认是虚假的. 来一个delete 对文件的操作实例. <% dim fs,f set fs=Server.CreateObje

vb.net2005自动生成的adaptertable的command.delete方法怎么调用?

问题描述 vb.net2005自动生成的adaptertable的command.delete方法怎么调用? 解决方案 解决方案二:我也想知道,正在找這方面的資料~~~~~