我似乎无法弄清楚这一点。无论我做什么,我都会收到“417 Expectation failed”错误。我看过的所有地方都说我需要删除 HttpWebRequest 的 Expect 标头。设置静态属性ServicePointManager.Expect100Continue = false
或 Web 请求上的实例属性request.ServicePoint.Expect100Continue = false
永远不要摆脱标题。我必须手动将其设置为 null 才能将其删除。
不管怎样,我仍然收到 417 错误。我缺少什么?
private static readonly MessageReceivingEndpoint UpdateStatusEndpoint
= new MessageReceivingEndpoint("http://twitter.com/statuses/update.xml", HttpDeliveryMethods.PostRequest);
public static XDocument UpdateStatus(ConsumerBase twitter, string accessToken, string message)
{
var data = new Dictionary<string, string>();
data.Add("status", message);
ServicePointManager.Expect100Continue = false; //Doesn't work
HttpWebRequest request = twitter.PrepareAuthorizedRequest(UpdateStatusEndpoint, accessToken, data);
request.ServicePoint.Expect100Continue = false; //setting here doesn't work either
//request.Expect is still set at this point unless I explicitly set it to null.
request.Expect = null;
var response = twitter.Channel.WebRequestHandler.GetResponse(request); //Throws exception
return XDocument.Load(XmlReader.Create(response.GetResponseReader()));
}
DotNetOpenAuth 不直接设置或支持 except100Continue。如果 Channel 类中有一个属性那就太好了。
在调用“准备授权请求”之前添加以下内容:
((HttpWebRequest)WebRequest.Create
(UpdateStatusEndpoint.Location)).ServicePoint.Expect100Continue = false;
Expect100Continue 根据调用的 URL 设置。所以你可以在创建连接之前设置它。您甚至可以在配置文件中全局设置它。
<system.net>
<settings>
<servicePointManager expect100Continue="false" />
</settings>
</system.net>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)