当前位置:  开发笔记 > 编程语言 > 正文

在C#中的RESTfull/HTTP请求中添加标头和发布数据

如何解决《在C#中的RESTfull/HTTP请求中添加标头和发布数据》经验,为你挑选了1个好方法。

我在使用C#发送POST请求时遇到问题,似乎我误解了一些HTTP基础知识.所以基本上我正在实现RESTfull服务客户端,其工作方式如下:

    使用用户名/密码发出POST请求并获取令牌

    在进行其他GET/POST/PUT请求时,在标题(授权:TOKEN)中使用此标记

我用它WebRequest来制作GET请求(使用Authorization标头)并且它正在工作.但是,当我使用以下代码发出PUT请求时,服务正在提供"身份验证失败 - 未登录"消息:

String url = String.Format("{0}/{1}", AN_SERVER, app);
WebRequest theRequest = WebRequest.Create(url);
theRequest.Method = "POST";

theRequest.ContentType = "text/x-json";
theRequest.ContentLength = json.Length;
Stream requestStream = theRequest.GetRequestStream();

requestStream.Write(Encoding.ASCII.GetBytes(json), 0, json.Length);
requestStream.Close();


theRequest.Headers.Add("Authorization", authToken);

HttpWebResponse response =  (HttpWebResponse)theRequest.GetResponse();

发送POST请求时,我一定是犯了一个小错误(至少我希望如此).那么我做错了什么?

谢谢.



1> stevenrcfox..:

在请求蒸汽工作之前移动标题(根据AI W的评论),因为请求流正在添加正文.

webrequest在内部实现的方式,你需要在写主体之前完成标题,一旦它以流格式,它就可以发送了.

如果你看一下反射器或一些这样的反编译工具中webrequest的实现,你将能够看到逻辑.

希望这可以帮助


看起来像是一个非常差的实现,我并不感到惊讶,它引起了混乱.
推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有