c#http post请求出错

问题描述

代码中post的数据主体换成错的返回响应response.Status还是ok,是不是URL什么错误了

解决方案

解决方案二:
没代码谁,你让我猜?
解决方案三:
response.Status为OK只是说服务器正常返回了值,并不表示你提交的数据是正确的。比如说你提交了数据,服务器返回一个消息说你的数据错误,这时候,response.status也是OK。另外服务器可以设置不同错误的response.status。有时候为了避免暴露,服务器可以隐藏一些错误。
解决方案四:
stringurl="http://115.236.32.180/csxt/index.php/vote-vote?id=30";stringpostData=null;System.Net.HttpWebRequestreq=(System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);req.Method="POST";req.Accept="application/json,text/javascript,*/*";req.Referer="http://115.236.32.180/csxt/index.php/vote-vote?id=30";req.Headers["Accept-Language"]="zh-CN";req.UserAgent="Mozilla/5.0(WindowsNT6.1;WOW64;Tridene/7.0;rv:11.0)likeGecko";req.ContentType="application/x-www-form-urlencoded";req.Headers["Accept-Encoding"]="gzip,deflate";req.Host="115.236.32.180";req.KeepAlive=true;postData="phone=13016437824&id=30";byte[]bytes=System.Text.Encoding.UTF8.GetBytes(postData);System.IO.StreamnewStream=req.GetRequestStream();newStream.Write(bytes,0,bytes.Length);newStream.Close();System.Net.HttpWebResponseresponse=(System.Net.HttpWebResponse)req.GetResponse();zhuangtai="ss"+response.StatusDescription;returnzhuangtai;
解决方案五:
引用2楼save4me的回复:

response.Status为OK只是说服务器正常返回了值,并不表示你提交的数据是正确的。比如说你提交了数据,服务器返回一个消息说你的数据错误,这时候,response.status也是OK。另外服务器可以设置不同错误的response.status。有时候为了避免暴露,服务器可以隐藏一些错误。

那怎么样才能知道提交的数据是否成功
解决方案六:
你提交后,判断返回的东西不就可以了吗。
解决方案七:
这个需要根据具体的情况,一般网站如果提交成功,都会返回内容,比如成功提交的消息,或者成功的页面,而且往往成功和失败返回的内容是有区别的。你可以根据成功返回的内容,提取关键字来判断,比如包括OK或成功的,就判断问成功。就像判断登录页面,如果返回的页面里包含欢迎XXX,可能就是成功的标志,如果是请重新登录,那就是失败的标志。类似的。引用4楼qq_30416815的回复:

Quote: 引用2楼save4me的回复:
response.Status为OK只是说服务器正常返回了值,并不表示你提交的数据是正确的。比如说你提交了数据,服务器返回一个消息说你的数据错误,这时候,response.status也是OK。另外服务器可以设置不同错误的response.status。有时候为了避免暴露,服务器可以隐藏一些错误。

那怎么样才能知道提交的数据是否成功

解决方案八:
引用楼主qq_30416815的回复:

代码中post的数据主体换成错的返回响应response.Status还是ok,是不是URL什么错误了

你自己编写的代码去接受的数据主体。难道说你不想修改自己的代码的bug,只想纠结为什么程序还能有返回?那么你直接把接收post数据的目标页面删除掉就可以了。
解决方案九:
http://115.236.32.180/csxt/index.php/vote-vote?id=30中有表单(节选)<formmethod="post"onsubmit="returnvalidate();"action="http://115.236.32.180/csxt/index.php/vote-vote"id="p8_vote_30"><inputtype="hidden"name="vid"id="vid"value="30"><inputtype="hidden"name="multi"id="multi"value="10"><inputtype="hidden"name="min"id="min"value="10"><inputtype="text"name="username"id="username"style="padding:5px10px;"><inputtype="text"name="phone"id="phone"style="padding:5px10px;"><inputtype="submit"class="pxbtn"value="提交"/><inputtype="hidden"name="id"value="30"/></form>共6项,你只提交了2项postData="phone=13016437824&id=30";应该是不会通过对方的表单验证的。取不到数据可能才会出错
解决方案十:
引用4楼qq_30416815的回复:

Quote: 引用2楼save4me的回复:
response.Status为OK只是说服务器正常返回了值,并不表示你提交的数据是正确的。比如说你提交了数据,服务器返回一个消息说你的数据错误,这时候,response.status也是OK。另外服务器可以设置不同错误的response.status。有时候为了避免暴露,服务器可以隐藏一些错误。

那怎么样才能知道提交的数据是否成功

你可以在代码中写thrownewMyException("出错啦。",innerException);

这类语句。你可以自己看看客户端会得到什么结果。整个系统都会有一个异常处理的框架,客户端也是如此。当客户端得到的返回状态不是200OK,你的客户端代码应该走异常处理流程。你不可能去通过什么response.Code或者Status去得到,你应该到catch语句块或者UnhandledException事件处理等等与你的客户端系统相适应的“异常处理模块”中去查看Exception对象的具体类型(子类型),这些Exception对象会返回http返回码。
解决方案十一:
尽管你还没有在服务器端正确抛出异常状态的知识,我还是给你说一下客户端如何处理“post请求出错”吧。在客户端,如果必须要在底层去处理,写catch(WebExceptionex){.....}

例如你的客户端是Http协议,就可以写catch(WebExceptionex){varstatus=((HttpWebResponse)ex.Response).StatusCode;}

假设通常是在表现层才去统一捕获异常,则可能是写staticvoidCurrentDomain_UnhandledException(objectsender,UnhandledExceptionEventArgse){varwebError=e.ExceptionObjectasWebException;if(webError!=null){varresponse=webError.Response;......}}

这类处理。总之,不是直接读取Response.StatusCode,而是要到你不惑异常的模块去中读取。另外,根据协议不同,有些人可能习惯于用200OK状态、但是返回特定的字符串来“表示”业务处理出错。这就是要根据业务协议来看了,这种设计没有遵循.net框架。但是也不少见。
解决方案十二:
引用6楼save4me的回复:

这个需要根据具体的情况,一般网站如果提交成功,都会返回内容,比如成功提交的消息,或者成功的页面,而且往往成功和失败返回的内容是有区别的。你可以根据成功返回的内容,提取关键字来判断,比如包括OK或成功的,就判断问成功。就像判断登录页面,如果返回的页面里包含欢迎XXX,可能就是成功的标志,如果是请重新登录,那就是失败的标志。类似的。

我用抓包工具试了一下正确输入和错误输入,正确的时候响应报文的line-basetestdata是有内容的,但是错误的时候显示no_vote_option_selected,但是我的代码里还有显示内容和正确的时候显示的内容一样,我不知道问题在哪
解决方案十三:
我刚才试着提交了,如果成功的话,页面会返回正文里面包含"投票成功"文字,并且响应头包含Set-Cookie,失败的话,这两项都没有。引用11楼qq_30416815的回复:

Quote: 引用6楼save4me的回复:
这个需要根据具体的情况,一般网站如果提交成功,都会返回内容,比如成功提交的消息,或者成功的页面,而且往往成功和失败返回的内容是有区别的。你可以根据成功返回的内容,提取关键字来判断,比如包括OK或成功的,就判断问成功。就像判断登录页面,如果返回的页面里包含欢迎XXX,可能就是成功的标志,如果是请重新登录,那就是失败的标志。类似的。

我用抓包工具试了一下正确输入和错误输入,正确的时候响应报文的line-basetestdata是有内容的,但是错误的时候显示no_vote_option_selected,但是我的代码里还有显示内容和正确的时候显示的内容一样,我不知道问题在哪

时间: 2024-10-01 22:39:19

c#http post请求出错的相关文章

js与jQuery实现的兼容多浏览器Ajax请求实例_AJAX相关

ajax我们经常会用到的,但网上找到的大部份ajax兼容性都不强,下面自己改了一个不错的兼容性很强的ajax函数,同时后面介绍的jquery ajax 兼容性也很强. 一.纯js实现的Ajax实例: 复制代码 代码如下: var ajax = function() {}; ajax.prototype = {     request: function(method, url, callback, postVars) {         var xhr = this.createXhrObjec

ajax的异步请求-使用xmlhttp访问webservice时,得到的xmlhttp.status=0.而且得不到返回的xml文件

问题描述 使用xmlhttp访问webservice时,得到的xmlhttp.status=0.而且得不到返回的xml文件 服务器提供了 POST /LoginVerifyWebService/Login.asmx/Login HTTP/1.1 Host: 10.10.10.191 Content-Type: application/x-www-form-urlencoded Content-Length: length username=string&password=string&ra

java http get post 各种请求,模拟浏览器请求

package com.hlzt.wx.util.http; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import com.hlzt.wx.util.token.GlobalAccessTokenUtils; public class Htt

REST API出错响应的设计(转)

REST API应用很多,一方面提供公共API的平台越来越多,比如微博.微信等:一方面移动应用盛行,为Web端.Android端.IOS端.PC端,搭建一个统一的后台,以REST API的形式提供服务,也成为常见的开发模式.只是一个服务做得久了,就发现API的接口设计,如果能在一开始就好好设计一下,实在是功德无量的事.讨论API接口设计的文章已有不少,本文重点谈一谈当请求处理出现异常的时候,出错响应的内容和格式的设计. 比较自然的想法是,当有错误发生时,在响应中设置恰当的HTTP Status

AFNetworking2.0简易GET,POST请求封装以及使用

AFNetworking2.0简易GET,POST请求封装以及使用 AFNetworking不用我赘述其强大性,本人仅仅做了非常简易的封装,解决了有时候请求出错的问题,提供源码给大家. 封装源码库下载地址: http://pan.baidu.com/s/1wDLIQ 源码: Networking.h 与 Networking.m // // Networking.h // Weather // // Created by YouXianMing on 15/01/01. // Copyright

js 兼容多浏览器的Ajax请求代码示例

例  代码如下 复制代码 var ajax = function() {}; ajax.prototype = {     request: function(method, url, callback, postVars) {         var xhr = this.createXhrObject();         xhr.onreadystatechange = function() {             if (xhr.readyState !== 4) return;  

httpwebrequest模拟请求奇怪错误

问题描述 httpwebrequest模拟请求模拟请求表单的post请求表单时multipart/form-data模式的模拟请求出错错误信息如下SpecifiedvaluehasinvalidControlcharacters.Parametername:valueatSystem.Net.WebHeaderCollection.CheckBadChars(Stringname,BooleanisHeaderValue)atSystem.Net.HttpWebRequest.SetSpecia

servlet转发post请求给另一个servlet接受返回值处理完在传给·另一个jsp页面···

问题描述 感觉崩溃模仿别人写的··改改··好像有点问题···大体上功能是post请求给servlet,我转发给另一个servlet··解析返回值,取其中一部分,然后传给另一个jsp页面,输出ShuJuservice.javapublicclassShuJuServletextendsHttpServlet{@OverrideprotectedvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)throwsServletExceptio

【深入分析Java Web】HTTP解析-常见请求头/响应头/状态码

转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] B/S网络架构的核心是HTTP协议,掌握HTTP协议对一个从事互联网工作的程序员来说是非常重要的. 要理解HTTP协议,最重要的就是要熟悉HTTP协议中的HTTP Header. HTTP Header控制着互联网上成千上万的用户的数据的传输. 最关键的是,它控制着用户浏览器的渲染行为和服务器的执行逻辑. 例如,当服务器没有用户请求的数据时就会返回一个404状态码,告诉浏览器没有要