HttpWebRequest 返回BadRequest(400) 同时返回Response

今天用Fiddler分析安卓APP的一个登陆功能的时候,账号和密码错误会返回相应的消息,并且状态码是400。

正常用法:

 1         /// <summary>
 2         /// 读取返回的内容
 3         /// </summary>
 4         /// <param name="asyncresult"></param>
 5         private void ReadCallBack(IAsyncResult asyncresult)
 6         {
 7             String result = String.Empty;
 8             try
 9             {
10                 HttpWebRequest myrequest = (HttpWebRequest)asyncresult.AsyncState;
11                 HttpWebResponse response = (HttpWebResponse)myrequest.EndGetResponse(asyncresult);
12
13                 //读取返回对象
14                 Stream responseStream = response.GetResponseStream();
15
16                 using (var render = new StreamReader(responseStream, Encoding.UTF8))
17                 {
18                     result = render.ReadToEnd();
19                     render.Close();
20                 }
21             }
22             catch (Exception ex)
23             {
24
25                 Console.WriteLine("出现异常:" + ex.Message);
26             }
27             //处理返回消息
28             if (Handler != null)
29                 Handler(result);
30         }

当执行GetResponseStream就抛出异常了,异常提示是BadRequest.

要想获取400返回的信息,需要对catch部分做特殊处理。

添加catch代码:

 1                 using (WebResponse response = e.Response)
 2                 {
 3                     HttpWebResponse httpResponse = (HttpWebResponse)response;
 4                     using (Stream data = response.GetResponseStream())
 5                     using (var reader = new StreamReader(data))
 6                     {
 7                         string text = reader.ReadToEnd();
 8                         Console.WriteLine(text);
 9                     }
10                 }

这样就可以获取到400返回的消息了。

stackoverflow问题链接:

http://stackoverflow.com/questions/692342/net-httpwebrequest-getresponse-raises-exception-when-http-status-code-400-ba

http://stackoverflow.com/questions/11660947/httpwebrequest-getresponse-throws-bad-request-400-error

时间: 2024-11-09 19:33:33

HttpWebRequest 返回BadRequest(400) 同时返回Response的相关文章

post数据时报错:远程服务器返回错误: (400) 错误的请求。

网上查了多种方法,有不少说法,报400说是传的数据格式不对,最后的结论确实是数据格式不对. Content_Type为:application/json,配的数据格式有些麻烦,特别数多层,单层还好.例如,我本传的数据是这个的json: { "key1": { "key11": "value11", "key12": "value12" }, "key2": "value2&qu

Get Start-如何将Controller的返回值转换成HTTP response消息

一个Web API 控制器方法可以返回以下类型的值 1.void 2.HttpResponseMessage 3.IHttpActionResult 4.其它一些类型 根据action不同的返回类型,Web API 使用不同的处理方法去创建一个http响应信息. Action返回类型 Web API 如何生成响应消息 void 返回空 204(No Content) HttpResponseMessage 直接转换成HTTP响应消息 IHttpActionResult 调用ExecuteAsyn

WebService 返回json格式和返回xml格式的数据

返回json格式 //using System.Web.Script.Services; [WebMethod] [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)] public void HelloWorld() { Context.Response.Clear(); Context.Response.ContentType = "application/json"; Model.User.U

SqlServer 获得存储过程的返回值(参数返回),别玩了output

declare @dingdanid int declare @fanhuizhi int set @dingdanid = 1 exec 检测订单出库资格 @dingdanid ,@fanhuizhi output   (注意别忘了output否则返回值是NULL) select @fanhuizhi create proc dbo.检测订单出库资格 @dingdanID int,     @returnValue int output as -- 输入变量 订单编号 set @returnV

C语言 realloc为什么要有返回值,realloc返回值详解/(解决任意长度字符串输入问题)。

在C语言操作中会用到大量的内存操作,其中很常用的一个是realloc(). 由字面意思可以知道,该函数的作用是用于重新分配内存. 使用方式如下: NewPtr=(数据类型*)realloc(OldPtr,MemSize) 其中OldPtr指向 待重新分配内存的指针. NewPtr指向 新分配空间的指针. MemSize为 分配后的空间大小. 该函数的使用涉及以下几个问题: 1.不同情况下的返回值 2.OldPtr指向的内存会不会自动释放 3.OldPtr和NewPtr分别是什么内容,他们有什么关

Java Socket编程readLine返回null,read返回-1的条件

客户端正常关闭socket的时候,服务器端的readLine()方法会返回null,或者read()方法会返回-1 Java Socket编程readLine返回null,read返回-1的条件,布布扣,bubuko.com

微信浏览器 返回按钮二次返回

在做微信开发的时候,当通过微信的推送消息(页面1)打开网页后(进入页面2),此时,再次打击链接打开网页(页面3).当点击安卓手机的返回按钮时,可以正常回退到"页面2",但是当点击微信左上角的返回按钮时,会直接回退到"页面1". 起初感觉是加载浏览器插件的原因,思考了好久不得结果.后来发现"招商银行信用卡中心"官方微信,并不存在上述问题.观察招商银行的官方微信发现,页面2的title是微信定义的title,但是页面3的title变成了用户自定义的t

带进度条的webview,支持网页前进和返回、刷新,返回键goBack等.

转载请注明出处http://blog.csdn.net/sinat_25689603/article/details/51917294 本文出自yedongyang的博客 1.介绍 一款很简单的webview,头部有进度条,支持网页前进和返回.刷新,返回键goBack等,可定制性强,漂亮简洁大方,集成到软件里很方便,功能还不复杂. 2.截图 3.代码介绍 因为有标题头,所以这里我是继承LinearLayout. public class WebViewLayout extends LinearL

今天面试问了一道题。说一串字符串由这几个符号组成&quot;&lt;&gt;{}[]()”,写一个算法,例如如果组成方式为“&lt;&gt;{[]}{}()”这种,也就是XML格式那种则返回true。否则返回false;

原创 今天面试问了一道题.说一串字符串由这几个符号组成"<>{}[]()",写一个算法,例如如果组成方式为"<>{[]}{}()"这种,也就是XML格式那种则返回true.否则返回false: 当时没想出来, 只想到了回文数解决办法.回文数解决办法是颠倒比较,相等为true: 换xml格式当时真没想到啥好方法: 在回来的路上想到了.. .. 去重,吧临近的一组去掉,在递归调用比较去重直到最后,如果有剩下则不返回false:否则true: 代码